• [转]log4net在net core中使用


    log4net .NET Core 版使用,log4net 2.0.7版发布也有一段时间了,从2.0.6 版开始就已经支持.NET Core。

    之前有介绍NLog .NET Core版的使用,ASP.NET Core 开发-Logging 使用NLog 写日志文件

    ASP.NET Core已经内置了日志支持,可以轻松输出到控制台。使用log4net 将日志写入到文件及输出控制台。

    .NET Core项目使用

    新建一个 .NET Core 项目,选择控制台应用程序

    添加引用:

    Install-Package log4net

    使用简单配置,将日志输出至控制台,跟之前.NET 版本略微有些区别,需要指定Repository 。

    复制代码
            public static void Main(string[] args)
            {
                ILoggerRepository repository = LogManager.CreateRepository("NETCoreRepository");
                // 默认简单配置,输出至控制台
                BasicConfigurator.Configure(repository);
                ILog log = LogManager.GetLogger(repository.Name,"NETCorelog4net");
    
                log.Info("NETCorelog4net log");
                log.Info("test log");
                log.Error("error");
                log.Info("linezero");
                Console.ReadKey();
            }
    复制代码

    运行程序显示如下:

    下面增加配置,让其输出至文件。

    在项目中添加一个配置文件,这里添加一个log4net.config ,内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <log4net>
        <!-- Define some output appenders -->
        <appender name="rollingAppender" type="log4net.Appender.RollingFileAppender">
            <file value="loglog.txt" />
            <!--追加日志内容-->
            <appendToFile value="true" />
    
            <!--防止多线程时不能写Log,官方说线程非安全-->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    
            <!--可以为:Once|Size|Date|Composite-->
            <!--Composite为Size和Date的组合-->
            <rollingStyle value="Composite" />
    
            <!--当备份文件时,为文件名加的后缀-->
            <datePattern value="yyyyMMdd.TXT" />
    
            <!--日志最大个数,都是最新的-->
            <!--rollingStyle节点为Size时,只能有value个日志-->
            <!--rollingStyle节点为Composite时,每天有value个日志-->
            <maxSizeRollBackups value="20" />
    
            <!--可用的单位:KB|MB|GB-->
            <maximumFileSize value="3MB" />
    
            <!--置为true,当前最新日志文件名永远为file节中的名字-->
            <staticLogFileName value="true" />
    
            <!--输出级别在INFO和ERROR之间的日志-->
            <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="ALL" />
                <param name="LevelMax" value="FATAL" />
            </filter>
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
            </layout>
        </appender>
        <root>
            <priority value="ALL"/>
            <level value="ALL"/>
            <appender-ref ref="rollingAppender" />
        </root>
    </log4net>
    这里定义了三个 Appender,都会起作用,然后日志级别ALL 所有的日志都会记录。

    可以定义LoggerHelper如下

      public class LoggerHelper
        {
            private static ILog log;
            static LoggerHelper()
            {
                if (log == null)
                {
                    ILoggerRepository repository = LogManager.CreateRepository("NETCoreRepository");
                    XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
                    log = LogManager.GetLogger(repository.Name, "NETCorelog4net");
                }
            }
    
            /// <summary>
            /// 普通日志
            /// </summary>
            /// <param name="message"></param>
            /// <param name="exception"></param>
            public static void Info(string message, Exception exception = null)
            {
                if (exception == null)
                    log.Info(message);
                else
                    log.Info(message, exception);
            }
    
            /// <summary>
            /// 告警日志
            /// </summary>
            /// <param name="message"></param>
            /// <param name="exception"></param>
            public static void Warn(string message, Exception exception = null)
            {
                if (exception == null)
                    log.Warn(message);
                else
                    log.Warn(message, exception);
            }
    
            /// <summary>
            /// 错误日志
            /// </summary>
            /// <param name="message"></param>
            /// <param name="exception"></cannot be null.param>
            public static void Error(string message, Exception exception = null)
            {
                if (exception == null)
                    log.Error(message);
                else
                    log.Error(message, exception);
            }
        }
  • 相关阅读:
    《DSP using MATLAB》 示例 Example 9.12
    《DSP using MATLAB》示例 Example 9.11
    《DSP using MATLAB》示例 Example 9.10
    《DSP using MATLAB》示例Example 9.9
    《DSP using MATLAB》示例 Example 9.8
    《DSP using MATLAB》示例Example 9.7
    《DSP using MATLAB》示例 Example 9.6
    《DSP using MATLAB》示例Example 9.5
    《DSP using MATLAB》示例 Example 9.4
    (转载)【C++11新特性】 nullptr关键字
  • 原文地址:https://www.cnblogs.com/hurui1/p/12605653.html
Copyright © 2020-2023  润新知