log4net每个连接都有appender
编辑:我收回它,我的代码中有一个错误,一旦我修复了它,它就工作了。代码现在更新为工作版本。 错误出现在log4net每个连接都有appender,log4net,Log4net,编辑:我收回它,我的代码中有一个错误,一旦我修复了它,它就工作了。代码现在更新为工作版本。 错误出现在ThreadContext.Properties[KEY\u LOG\u FOLDER]=loggerName和 ThreadContext.Properties[KEY\u LOG\u FILE]=loggerName。我不小心把“KEY\u LOG\u FOLDER”和“KEY\u LOG\u FILE”放在引号中,它们应该是在别处定义的常量字符串 我正在尝试为每个连接使用一个滚动文件追加器
ThreadContext.Properties[KEY\u LOG\u FOLDER]=loggerName代码>和
ThreadContext.Properties[KEY\u LOG\u FILE]=loggerName代码>。我不小心把“KEY\u LOG\u FOLDER”
和“KEY\u LOG\u FILE”
放在引号中,它们应该是在别处定义的常量字符串
我正在尝试为每个连接使用一个滚动文件追加器。连接动态进入,无法在启动时确定。目前,我正在尝试以下方法:
XML:
然而,当所有这些都快速执行时,这似乎不起作用
我应该以编程方式为每个连接创建appender,还是这是一种糟糕的做法?我认为文件名只设置了一次,所以不是每次登录时都打开。如果您想要不同的文件名,可以根据您在问题中提出的建议,为每个文件动态设置不同的记录器。我相信文件名只设置一次,所以不是每次登录时都打开。如果您想要不同的文件名,可以根据您在问题中提出的建议,为每个文件动态创建不同的记录器
<log4net>
<logger name="Connection.CommunicationLogger">
<appender-ref ref="ConnectionCommunicationFileAppender"/>
<level value="ALL"/>
</logger>
<appender name="ConnectionCommunicationFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="C:\logs\%property{LogFolder}\%property{LogName}.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="100KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date: %message%newline" />
</layout>
</appender>
</log4net>
public FileLogger(string loggerName)
{
string logsDir = ConfigurationManager.AppSettings["LogRootDirectory"];
System.IO.Directory.CreateDirectory(logsDir + "\\" + loggerName);
ILoggerRepository loggerRepository = LogManager.CreateRepository(loggerName + REPOSITORY);
ThreadContext.Properties[KEY_LOG_FOLDER] = loggerName;
ThreadContext.Properties[KEY_LOG_FILE] = loggerName;
log4net.Config.XmlConfigurator.Configure(loggerRepository);
logger = LogManager.GetLogger(loggerName + REPOSITORY, "Connection.CommunicationLogger");
}