问题描述
我正在使用一个多项目解决方案,包括一个客户端和一个服务器以及一个用于log4net的项目。我正在尝试为客户端,服务器配置一个单独的日志文件,并为要写入的所有其他项目配置一个“默认”文件。由于某种原因,服务器开始写入其自己的日志文件,但是在首次通过TCP双工与客户端联系之后,服务器会切换并专门写入默认文件。
所有项目使用的logger类:
public class Logger
{
private static LogInstance _logger;
public static LogInstance Instance => _logger ?? (_logger = new LogInstance("DefaultLogger"));
private static LogInstance _clientLogger;
public static LogInstance ClientInstance => _clientLogger ?? (_clientLogger = new LogInstance("ClientLogger"));
private static LogInstance _serverLogger;
public static LogInstance ServerInstance => _serverLogger ?? (_serverLogger = new LogInstance("ServerLogger"));
}
public class LogInstance
{
private static ILog Log;
public LogInstance(string loggerName)
{
Log = LogManager.GetLogger(loggerName);
}
/**Removed the Warning(),Debug(),and Info() messages for space; they function identically to Error() with string input instead of Exception**/
public void Error(Exception ex,[CallerMemberName] string memberName = "",[CallerFilePath] string sourceFilePath = "",[CallerLineNumber] int sourceLineNumber = 0)
{
if (Log.IsErrorEnabled)
{
Log.Error($"Error logged from method {memberName} in file {sourceFilePath} at line {sourceLineNumber}",ex);
}
}
}
我的log4net配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\tmp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net>
<root>
<!--<level value="DEBUG" />-->
<level value="ALL" />
</root>
<logger name="DefaultLogger">
<appender name="DefaultAppender" type="log4net.Appender.RollingFileAppender">
<file value="${ProgramData}\[redacted]\logging\default.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="'.'yyyyMMdd'.log'" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level - %message%newline" />
</layout>
</appender>
</logger>
<logger name="ServerLogger">
<appender name="ServerAppender" type="log4net.Appender.RollingFileAppender">
<file value="${ProgramData}\[redacted]\logging\server.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="'.'yyyyMMdd'.log'" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level - %message%newline" />
</layout>
</appender>
</logger>
<logger name="ClientLogger">
<appender name="ClientAppender" type="log4net.Appender.RollingFileAppender">
<file value="${ProgramData}\[redacted]\logging\client.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="'.'yyyyMMdd'.log'" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level - %message%newline" />
</layout>
</appender>
</logger>
</log4net>
</configuration>
服务器日志文件的示例:
2020-10-27 12:55:52,507调试-方法中的信息输入 第29行的文件Server \ App.xaml.cs中的ApplicationStart:日志记录为 启用。
2020-10-27 12:55:53,112调试-从文件中的方法启动中调试条目 第64行的Server \ Services \ ServerController.cs:服务器附加的输入 频道。
和默认的日志文件(最初仅由Data项目使用,但是在连接输入通道后包括服务器日志):
2020-10-27 12:55:53,853调试-从方法GetAllRoles中的调试条目 第313行的文件Data \ Security \ SecurityDataHandler.cs:所有角色均为 检索到。
2020-10-27 12:55:53,903调试-方法中的调试项 文件Data \ Security \ SecurityDataHandler.cs中的IsValidRetrievedRole位于 第507行:已检索到角色Admin。
2020-10-27 12:55:53,934调试-来自方法GetAllUsers中的调试条目 第401行的文件Data \ Security \ SecurityDataHandler.cs:所有用户 检索到。
2020-10-27 12:56:00,080调试-方法中的调试项 文件Data \ Datalogging \ DatalogDataHandler.cs中的AddEntryToDatabase位于 第28行:添加了数据日志条目326。
2020-10-27 12:56:00,113调试-方法中的调试项 Data \ Datalogging \ DatalogDataHandler.cs文件中的AddEntryValuesForEntry 在第69行:为条目326添加了8个值。
2020-10-27 12:56:38,943调试-方法StopServices的调试项 在文件Server \ Models \ ServerMainDataModel.cs中的第182行:停止所有 服务和渠道。
2020-10-27 12:56:39,000错误-方法记录错误 文件中的RetrieveSNowDepth 第75行的Server \ Services \ MapServices \ SNowDepthManager.cs
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)