将 Log4Net 转换为 Serilog [英] Converting Log4Net to Serilog

查看:65
本文介绍了将 Log4Net 转换为 Serilog的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Log4Net 可以有很多记录器,我很想知道如何用 Serilog 做同样的事情.我阅读了有关根据日志级别或过滤器表达式写入不同文件的内容,但没有发现有关使用不同日志名称的任何信息.

Log4Net can have many loggers, and I wounder how I can do the same with Serilog. I read about writing to different files depending on log level or a filter expression, but did not found anything about using different log names.

public class Logger
{
    public static ILog Log
    {
        get
        {
            return LogManager.GetLogger("DomainLog");
        }
    }

    public static ILog LogUltimo
    {
        get
        {
            return LogManager.GetLogger("UtlimoDomainLog");
        }
    }

    public static ILog CriticalErrorLog
    {
        get
        {
            return LogManager.GetLogger("CriticalBusinessErrorLog");
        }
    }
}

这是xml配置:

    <?xml version="1.0" encoding="utf-8" ?>
<log4net>

<logger name="DomainLog">
    <level value="INFO"/>
    <appender-ref ref="DomainLogAppender"/>
</logger>

<appender name="DomainLogAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs\DomainLog.log" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="50" />
    <maximumFileSize value="10MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%d [%t]%-5p- %m%n" />
    </layout>
</appender>

<logger name="UtlimoDomainLog">
    <level value="INFO"/>
    <appender-ref ref="UtlimoDomainLogAppender"/>
</logger>

<appender name="UtlimoDomainLogAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs\DomainLog.ultimo.log" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="50" />
    <maximumFileSize value="5MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%d [%t]%-5p- %m%n" />
    </layout>
</appender>

<logger name="CriticalBusinessErrorLog">
    <level value="ALL"/>
    <appender-ref ref="CriticalBusinessErrorLogAppender"/>
</logger>

<appender name="CriticalBusinessErrorLogAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs\CriticalBusinessError.log" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="5MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%d [%t]%-5p- %m%n" />
    </layout>
</appender>

<logger name="NHibernate.SQL">
    <level value="ALL"/>
    <appender-ref ref="NHibernateAppender"/>
</logger>

<appender name="NHibernateAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs\NHibernate.log" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="5MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%d [%t]%-5p- %m%n" />
    </layout>
</appender>

</log4net>

推荐答案

使用 Serilog 使用单独的记录器的通常方法是使用 子记录器 使用 过滤器 或通过 Serilog.Sinks.Map,使用上下文属性来决定哪个记录器将包含或排除某些消息.

The usual ways of having separate loggers with Serilog are either with sub-loggers using filters or via Serilog.Sinks.Map, using context properties to decide which logger will include or exclude certain messages.

您可以在 SO 上查看有关这些其他问题的更详细的答案和示例:

You can see more detailed answers and examples on these other questions here on SO:

也就是说,现在通常将所有日志发送到中央日志服务器,您可以对其进行过滤、映射相关性等,而不是单独的日志,您可以标记"日志.使用不同的 SourceContext(或您命名/了解的不同属性)记录消息,这将允许您轻松过滤登录中央服务器.

That said, nowadays it's common to have all the logs be sent to a central logging server that you can filter, map correlations, etc. and instead of separate logs, you would "tag" log messages with different SourceContexts (or a different property that you name/know about) which would allow you to easily filter the logs in the central server.

您可能想查看 ExceptionlessSeqSentry 等.

You might want to look at Exceptionless, Seq, Sentry, and similar.

这篇关于将 Log4Net 转换为 Serilog的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆