• C#/.net 5.0


    控制台应用程序/.net 5.0
    引用包
    • log4net
    log4net.config【始终复制】

    说明:

    • FileAppender和RollingFileAppender都是用来将日志写入到文本文件中。但是,RollingFileAppender提供了更多的选项,可以很方便的控制何时新建一个新的文本文件。这个还是很有必要的,想象以下,你把所有的日志都记录到一个文本文件中,即使系统再小,日复一日,你也会有找不到日志的时候,何况,随着文本的增大,文本的写入与打开也会想得更加的慢,甚至出现超时。因此,主要使用RollingFileAppender写日志.
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <!-- Level的级别,由高到低 -->
      <!-- None > Fatal > ERROR > WARN > DEBUG > INFO > ALL-->
      <!-- 解释:如果level是ERROR,则在cs文件里面调用log4net的info()方法,则不会写入到日志文件中-->
      <log4net>
        <!--错误日志类-->
        <logger name="error">
          <!--定义记录的日志级别-->
          <level value="ALL" />
          <!--输出到文件-->
          <appender-ref ref="ErrorAppender" />
          <!--输出到控制台-->
          <appender-ref ref="ConsoleAppender"/>
        </logger>
        <!--信息日志类-->
        <logger name="info">
          <level value="ALL" />
          <appender-ref ref="InfoAppender" />
          <appender-ref ref="ConsoleAppender"/>
        </logger>
        <!--调试日志类-->
        <logger name="debug">
          <level value="ALL" />
          <appender-ref ref="DebugAppender" />
          <appender-ref ref="ConsoleAppender"/>
        </logger>
        <!--错误日志附加介质:输出到文件-->
        <!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
        <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
          <!--日志输出到exe程序这个相对目录下-->
          <file value="Log\Error\" />
          <!--输出的日志不会覆盖以前的信息-->
          <appendToFile value="true" />
          <!--备份文件的个数-->
          <maxSizeRollBackups value="100" />
          <!--单个日志文件的最大大小-->
          <maxFileSize value="10240" />
          <!--是否使用静态文件名-->
          <staticLogFileName value="false" />
          <!--日志文件名-->
          <datePattern value="yyyyMMdd'.txt'" />
          <!--文件创建的方式,这里是以Date方式创建-->
          <rollingStyle value="Date" />
          <!--错误日志布局-->
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%newline%date [Thread: %thread] %newline%message %newline"/>
          </layout>
        </appender>
        <!--信息日志附加介质:输出到文件-->
        <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
          <!--日志目录-->
          <file value="Log\Info\" />
          <appendToFile value="true" />
          <maxFileSize value="10240" />
          <maxSizeRollBackups value="100" />
          <!--日志文件名是否为静态-->
          <staticLogFileName value="false" />
          <datePattern value="yyyyMMdd'.txt'" />
          <rollingStyle value="Date" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%newline%date [Thread: %thread] %message %newline"/>
          </layout>
        </appender>
        <!--调试日志附加介质:输出到文件-->
        <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
          <file value="Log\Debug\" />
          <appendToFile value="true" />
          <maxFileSize value="10240" />
          <maxSizeRollBackups value="100" />
          <staticLogFileName value="false" />
          <datePattern value="yyyyMMdd'.txt'" />
          <rollingStyle value="Date" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%newline%date [Thread: %thread] %message %newline"/>
          </layout>
        </appender>
        <!--日志附加介质:输出到控制台-->
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
          <!--<mapping>
            <level value="ERROR" />
            <foreColor value="White" />
            <backColor value="Red, HighIntensity" />
          </mapping>
          <mapping>
            <level value="DEBUG" />
            <foreColor value="White" />
            <backColor value="Green" />
          </mapping>
          <mapping>
            <level value="INFO" />
            <foreColor value="White" />
            --><!--<backColor value="Yellow" />--><!--
          </mapping>-->
          <layout type="log4net.Layout.PatternLayout">
            <!--%data格式为yyyy-MM-dd HH:mm:ss,sss-->
            <conversionPattern value="%date{yyyy'-'MM'-'dd HH':'mm':'ss} [%-5level] %message%newline" />
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="Debug"/>
            <param name="LevelMax" value="Fatal"/>
          </filter>
        </appender>
      </log4net>
    </configuration>

    输出样式说明

    • %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
    • %n(new line):换行
    • %d(datetime):输出当前语句运行的时刻
    • %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
    • %t(thread id):当前语句所在的线程ID
    • %p(priority):日志的当前优先级别,即DEBUG、INFO、WARN…等
    • %c(class):当前日志对象的名称,例如:
    • %f(file):输出语句所在的文件名。
    • %l(line):输出语句所在的行号。
    • %数字:表示该项的最小长度,如果不够,则用空格填充,如%-5level表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。
    控制台:LogHelper.cs
    using log4net;
    using log4net.Config;
    using log4net.Repository;
    using System.IO;
    
    public class LogHelper
    {
        private static ILoggerRepository repository { get; set; }
        private static ILog _logInfo;
        private static ILog _logError;
        private static ILog _logDebug;
        private static ILog logInfo
        {
            get
            {
                if (_logInfo == null)
                {
                    Configure();
                }
                return _logInfo;
            }
        }
        private static ILog logError
        {
            get
            {
                if (_logError == null)
                {
                    Configure();
                }
                return _logError;
            }
        }
        private static ILog logDebug
        {
            get
            {
                if (_logDebug == null)
                {
                    Configure();
                }
                return _logDebug;
            }
        }
    
        public static void Configure(string repositoryName = "NETCoreRepository", string configFile = "log4net.config")
        {
            repository = LogManager.CreateRepository(repositoryName);
            XmlConfigurator.Configure(repository, new FileInfo(configFile));
            _logInfo = LogManager.GetLogger(repositoryName, "info");
            _logError = LogManager.GetLogger(repositoryName, "error");
            _logDebug = LogManager.GetLogger(repositoryName, "debug");
        }
    
        public static void Info(string msg)
        {
            logInfo.Info(msg);
        }
    
        public static void Debug(string msg)
        {
            logError.Debug(msg);
        }
    
        public static void Error(string msg)
        {
            logError.Error(msg);
        }
    }
    .net 5.0 注入中间件方式
    引用
    • log4net
    • Microsoft.Extensions.Logging.Log4net.AspNetCore
    log4.config【始终复制】
    <?xml version="1.0" encoding="utf-8" ?>
    
    <log4net>
      <!--指定日记记录方式,以滚动文件的方式(文件记录)-->
      <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
        <!--日志路径-->
        <file value="Logmessage" />
        <!--是否是向文件中追加日志-->
        <appendToFile value="true" />
        <!--log保留天数-->
        <param name= "MaxSizeRollBackups" value= "10"/>
        <!--每个文件最大1M-->
        <param name="maximumFileSize" value="1MB" />
        <!--日志根据日期滚动-->
        <param name="RollingStyle" value="Date" />
        <!--日志文件名格式为:logs_20080831.log-->
        <param name="DatePattern" value=""logs_"yyyyMMdd".log"" />
        <!--日志文件名是否是固定不变的-->
        <param name="StaticLogFileName" value="false" />
        <!--布局-->
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception" />
        </layout>
      </appender>
      <root>
        <level value="ALL"/>
        <appender-ref ref="RollingFile" />
      </root>
    </log4net>
    Program.cs

    .ConfigureLogging(loggingBuilder=> 
    {
        loggingBuilder.AddLog4Net("log4net.config");
    })
    使用方式

  • 相关阅读:
    Security » Authorization » 要求处理器中的依赖注入
    Security » Authorization » 基于自定义策略的授权
    Security » Authorization » 基于声明的授权
    Security » Authorization » 基于角色的授权
    CentOS下下载软件,不安装的方法
    rsync+sersync+inotify实现服务器间文件同步之一
    linux查看机器负载
    htpasswd建立和更新存储用户名、密码
    由异常掉电问题---谈xfs文件系统
    Flashcache基本使用及注意事项
  • 原文地址:https://www.cnblogs.com/gygtech/p/14635674.html
Copyright © 2020-2023  润新知