0
編輯:我收回,我有我的代碼中的錯誤,一旦我修好了,它的工作原理。代碼現在更新爲工作版本。 錯誤發生在ThreadContext.Properties[KEY_LOG_FOLDER] = loggerName;
和 ThreadContext.Properties[KEY_LOG_FILE] = loggerName;
。我不小心把"KEY_LOG_FOLDER"
和"KEY_LOG_FILE"
放在引號中,它們應該是其他地方定義的常量字符串。log4net有每個連接appender
我想每個連接都有一個滾動文件appender。連接動態進入並且不能在啓動時確定。目前,我想以下幾點:
XML:
<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");
}
然而,這似乎並沒有當這一切都執行迅速開展工作。
我應該以編程方式爲每個連接創建appender,否則這將是不好的做法?