我在web.config中有以下内容:
<log4net>
<appender name="mainLog"
type="log4net.Appender.FileAppender">
<file value="Log/Log.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="linqLog"
type="log4net.Appender.FileAppender">
<file value="Log/Log.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
<logger name="MainLogger">
<level value="ALL" />
<appender-ref ref="mainLog" />
</logger>
<logger name="LinqLogger">
<level value="ALL" />
<appender-ref ref="linqLog" />
</logger>
</log4net>
名为“mainLog”的第一个appender正在运行。但第二个名为“linqLog”的不是。如果我注释掉“mainLog”,那么“linqLog”就可以了。
在我的Global.asax文件中,我有以下内容:
protected void Application_Start(object sender, EventArgs e)
{
XmlConfigurator.Configure();
}
以下是我如何称呼他们:
public static void LogMessage(string message, string loggerName)
{
ILog log = LogManager.GetLogger(loggerName);
log.Info(string.Format(message));
}
LogMessage("My test message for MainLogger", "MainLogger");
LogMessage("My test message for LinqLogger", "LinqLogger");
任何想法我做错了什么?
答案 0 :(得分:2)
除非您指定lockingModel
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
请参阅http://logging.apache.org/log4net/release/config-examples.html
答案 1 :(得分:0)
Log4net支持两个写入同一文件的appender,但是你需要将锁定模型设置为“MinimalLock”。
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />