zoukankan      html  css  js  c++  java
  • [转]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);
            }
        }
  • 相关阅读:
    @atcoder
    @loj
    @atcoder
    @gym
    @codeforces
    @atcoder
    @bzoj
    @loj
    Kafka常用命令
    Kafka入门介绍
  • 原文地址:https://www.cnblogs.com/hurui1/p/12605653.html
Copyright © 2011-2022 走看看