我有一个 Asp.net core blazor 应用程序。
我正在尝试使用 Log4net 创建 2 个独立的记录器。
这个想法是,与迁移相关的所有错误都将进入名为“Migration”的记录器,所有常规错误将进入名为“Errors”的记录器,但这两个记录器都会捕获所有错误。
这是我的 Log4net.config
<log4net>
<appender name="Migration" type="log4net.Appender.FileAppender">
<file value="logs/migration.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %message%newline" />
</layout>
</appender>
<appender name="Errors" type="log4net.Appender.FileAppender">
<file value="logs/errors.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date - %level - %message%newline | %exception" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="Migration" />
<appender-ref ref="Errors" />
</root>
</log4net>
这就是我使用它的方式:
private static readonly ILog _logger = LogManager.GetLogger("Errors");
_logger.info("blah");
private static readonly ILog _migLogger = LogManager.GetLogger("Migration");
migLogger.info("blah");
您的配置未定义与您传递给
LogManager.GetLogger
调用的名称(即 Migration
和 Errors
)相匹配的记录器。
您只定义了附加程序。
因此,它使用根/默认记录器,您将其配置为使用两个附加程序,写入migration.log和errors.log文件。
要解决此问题,请定义缺少的命名记录器,并且仅将适当的附加程序挂钩到相应的记录器。
一种方法如下所示。请注意
logger
xml 标签。<log4net>
<appender name="Migration" type="log4net.Appender.FileAppender">
<file value="logs/migration.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %message%newline" />
</layout>
</appender>
<appender name="Errors" type="log4net.Appender.FileAppender">
<file value="logs/errors.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date - %level - %message%newline | %exception" />
</layout>
</appender>
<logger name="Migration">
<level value="Debug" />
<appender-ref ref="Migration" />
</logger>
<logger name="Errors">
<level value="DEBUG" />
<appender-ref ref="Errors" />
</logger>
<root></root>
</log4net>
或者,您可以将根/默认记录器视为错误记录器。
配置将如下所示。正是
additivity="false"
防止根/默认记录器的消息也出现在迁移记录器中
<log4net>
<appender name="Migration" type="log4net.Appender.FileAppender">
<file value="logs/migration.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %message%newline" />
</layout>
</appender>
<appender name="Errors" type="log4net.Appender.FileAppender">
<file value="logs/errors.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date - %level - %message%newline | %exception" />
</layout>
</appender>
<logger name="Migration" additivity="false">
<level value="DEBUG" />
<appender-ref ref="Migration" />
</logger>
<root>
<level value="DEBUG" />
<appender-ref ref="Errors" />
</root>
</log4net>