zoukankan      html  css  js  c++  java
  • log4net

    官网:https://logging.apache.org/log4net/

    文本列子下载地址: log4net.config

    Level:ALL < DEBUG < INFO <WARN <ERROR < FATAL < OFF

    root和logger:root是根级的,logger是专门设置某一个,如果同时满足,那就会都执行

     layout 下的  conversionPattern:

    %   序列%%输出单个百分号
    %n=%newline  "
    ", or "
    "
    %a 程序名称
    %c  logger名称
    %C=%class=%type 类型名    Log4Demo.Program   %type{1}=Program
    %d 日期
    %date=%date{yyyy:MM:dd HH:mm:ss,fff}   日期,可以自定义格式 
    %exception  错误消息
    %F=%file   文件路径  F:CodeWidowsServerLog4DemoProgram.cs
    %l=%location   获取打印的位子   Log4Demo.Program.Main(F:CodeWidowsServerLog4DemoProgram.cs:20)
    %p=%level  日志等级
    %logger  获取logger名称,%logger{1}     只获取一个的长度,以 . 分割   Log4Demo.Program   Program
    %m=%message   消息
    &M=%method  方法名
    %X=%mdc=%P=%properties=%property    属性
    %r=%timestamp   时间戳
    %stacktrace     Log4Demo.Program.Main
    %stacktracedetail    Log4Demo.Program.Main()
    %t=%thread  线程id
    %x=%ndc

    ①nueget包进行引用

    ②添加一个log4net.config配置文件,设置属性   复制到出入目录:始终复制

     FileInfo log2 = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");
                log4net.Config.XmlConfigurator.Configure(log2);  //配置
                ILog log = log4net.LogManager.GetLogger(typeof(Program));//实例
                try
                {
                    log.Info("打印哈哈");
                    string a = "a";
                    int i = int.Parse(a);
                }
                catch (Exception ex)
                {
                    log.Error("cuowu", ex);
                }
                Console.ReadLine();

    列子:ConsoleAppender

     <!-- 控制台日志,信息会打印到控制显示-->
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="【时间】:%date{yyyy:MM:dd HH:mm:ss}%n【等级】:%p%n【方法】:%stacktracedetail%n【信息】:%m" />
          </layout>
        </appender>

    ColoredConsoleAppender
      <!--控制台打印颜色-->
        <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
          <mapping>
            <level value="ERROR" />
            <foreColor value="Red" />
            <!--<backColor value="Red, HighIntensity" />-->
          </mapping>
          <mapping>
            <level value="INFO" />
            <foreColor value="Green" />
            <!--<backColor value="Black, HighIntensity" />-->
          </mapping>
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="【时间】:%date{yyyy:MM:dd HH:mm:ss}%n【等级】:%p%n【方法】:%stacktracedetail%n【信息】:%m%n" />
            <!--<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />-->
          </layout>
        </appender>

    FileAppender
     <!--文件-->
        <appender name="FileAppender" type="log4net.Appender.FileAppender">
          <file value="log.txt" />  <!--文件名-->
          <appendToFile value="true" />  <!--是否追加-->
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="【时间】:%date{yyyy:MM:dd HH:mm:ss}%n【等级】:%p%n【方法】:%stacktracedetail%n【信息】:%m%n" />
          </layout>
        </appender>

    到了我们的主要的了:

    RollingLogFileAppender
    普通的日志
     <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <!--日志路径-->
          <param name= "File" value= "Log"/>
          <!--是否是向文件中追加日志-->
          <param name= "AppendToFile" value= "true"/>
          <!--log保留天数-->
          <param name= "MaxSizeRollBackups" value= "10"/>
          <!--日志文件名是否是固定不变的-->
          <param name= "StaticLogFileName" value= "false"/>
          <!--日志文件名格式为:2008-08-31.log-->
          <param name= "DatePattern" value= "yyyy-MM-dd&quot;.read.log&quot;"/>
          <!--日志根据日期滚动-->
          <param name= "RollingStyle" value= "Date"/>
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%date{HH:mm:ss,fff} %-5p-%m%n" />
          </layout>
        </appender>

     

     输出成htm查看,我们需要对我们的Info和Error输出到两个文件进行区分

     <!-- htm页面查看 -->
        <appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender">
          <file value="logInfo" />
          <!--路径或者文件名-->
          <appendToFile value="true" />
          <!--是否追加-->
          <rollingStyle value="Composite" />
          <!--滚动规则-->
          <maxSizeRollBackups value="-1" />
          <!-- 备份文件的个数,只存一个设置为-1-->
          <maximumFileSize value="10MB" />
          <!-- 单个日志文件最大的大小-->
          <staticLogFileName value="false" />
          <!-- 是否使用静态文件名,这是设置为false,下面才能自定义-->
          <DatePattern   value="yyyyMMdd&quot;.htm&quot;" />
          <param name="Encoding" value="utf-8" />
          <layout type="log4net.Layout.PatternLayout">
            <!--这里的格式需要跟html中的样式一样去写
            &lt;BR>=<BR> 换行   这样类似的
            -->
            <conversionPattern value="&lt;HR COLOR=blue>【时间】:%date{yyyy:MM:dd HH:mm:ss}&lt;BR>【等级】:%p&lt;BR>【方法】:%stacktracedetail&lt;BR>【信息】:%m&lt;BR>&lt;HR Size=1>" />
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <!--使用过滤,只记录INFO和WARN-->
            <levelMin value="INFO" />
            <levelMax value="WARN" />
          </filter>
        </appender>
    
        <!-- htm页面查看错误-->
        <appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender">
          <file value="logError" />
          <!--路径或者文件名-->
          <appendToFile value="true" />
          <!--是否追加-->
          <rollingStyle value="Composite" />
          <!--滚动规则-->
          <maxSizeRollBackups value="-1" />
          <!-- 备份文件的个数,只存一个设置为-1-->
          <maximumFileSize value="10MB" />
          <!-- 单个日志文件最大的大小-->
          <staticLogFileName value="false" />      
          <!-- 是否使用静态文件名,这是设置为false,下面才能自定义-->
          <DatePattern   value="yyyyMMdd&quot;.htm&quot;" />
          <param name="Encoding" value="utf-8" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="&lt;HR COLOR=red>【时间】:%date{yyyy:MM:dd HH:mm:ss}&lt;BR>【等级】:%p&lt;BR>【方法】:%stacktracedetail&lt;BR>【信息】:%m&lt;BR>&lt;HR Size=1>" />
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <levelMin value="ERROR" />
            <levelMax value="FATAL" />
          </filter>
        </appender>

          

    Console控制台程序如何记录信息到我们的web端?

    这里需要我们动态的取改变file路径来完成,在同一个解决方案下面,想把错误写在一起,你也可以直接设置file vlue="E:XXDD"

      FileInfo log2 = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");
                log4net.Config.XmlConfigurator.Configure(log2);  //配置
    
                string sw = AppDomain.CurrentDomain.BaseDirectory;//debug\  
                //得到解决方法路径
                string ww = GetDirectoryName(sw, 4);
                string filePath = Path.Combine(ww, "MvcTest\");//新的路径
    
                log4net.Repository.ILoggerRepository ilr = LogManager.GetRepository(); //获取仓储
                IAppender[] ap = ilr.GetAppenders(); //获取Appenders
                //通过查询得到你想要的Appenders,然后设置
                RollingFileAppender rf = ap.FirstOrDefault(x => x.Name == "InfoRollingFileAppender") as RollingFileAppender;
                rf.File = filePath+"Info\";
                rf.ActivateOptions(); //激活
                RollingFileAppender rf2 = ap.FirstOrDefault(x => x.Name == "ErrorRollingFileAppender") as RollingFileAppender;
                rf2.File = filePath+"Error\";
                rf2.ActivateOptions(); //激活
                ILog log = log4net.LogManager.GetLogger(typeof(Program));//实例

    查看一下

  • 相关阅读:
    新购服务器流程
    nginx代理证书使用方法
    一键部署lnmp脚本
    mysql主从库配置读写分离以及备份
    Linux入门教程(更新完毕)
    Git 工作流程
    Git远程操作
    常用Git命令
    js数组去重
    Sublime Text设置快捷键让html文件在浏览器打开
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/10582210.html
Copyright © 2011-2022 走看看