zoukankan      html  css  js  c++  java
  • 如何在一个工程里面实现不同的功能打入不同的日志文件中【log4net】



    config配置文件如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        
    <configSections>
            
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
        
    </configSections>
        
    <log4net>
            
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
                
    <file value="log/log.txt" />
                
    <appendToFile value="true" />
                
    <maximumFileSize value="300KB" />
                
    <maxSizeRollBackups value="2" />
                
    <layout type="log4net.Layout.PatternLayout">
                    
    <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
                
    </layout>
            
    </appender>
            
    <appender name="LoginFile" type="log4net.Appender.RollingFileAppender">
                
    <file value="log/login.txt" />
                
    <appendToFile value="true" />
                
    <maximumFileSize value="300KB" />
                
    <maxSizeRollBackups value="2" />
                
    <layout type="log4net.Layout.PatternLayout">
                    
    <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
                
    </layout>
            
    </appender>
            
    <root>
                
    <level value="ALL" />
                
    <appender-ref ref="RollingFile" />
            
    </root>
            
    <logger name="LoginFile">
                
    <level value="ALL" />
                
    <appender-ref ref="LoginFile" />
            
    </logger>
        
    </log4net>
    </configuration>

    可以增加多个logger节和appender节配合使用
    <level value="ALL"/> 这句话意思是针对Warn、Debug、Info所有级别的提示都使用下面的介质

    服务器端代码如下:
    namespace log4net
    {
        
    /// <summary>
        
    /// Summary description for Class1.
        
    /// </summary>

        class Class1
        
    {
            
    /// <summary>
            
    /// The main entry point for the application.
            
    /// </summary>
            
    /// 

            public static readonly log4net.ILog log2 = log4net.LogManager.GetLogger("LoginFile");
            
    public static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            [STAThread]
            
    static void Main(string[] args)
            
    {
                log2.Info(
    "----info----");
                log2.Warn(
    "----info----");
                log2.Debug(
    "----info----");
                log.Info(
    "----info----");
                log.Warn(
    "----info----");
                log.Debug(
    "----info----");
                
            }

        }

    }

    Log4net框架定义了一个叫做LogManager的类,用来管理所有的logger对象。它有一个GetLogger()静态方法,用我们提供的名字参数来检索已经存在的Logger对象。如果框架里不存在该Logger对象,它也会为我们创建一个Logger对象。代码如下所示:

    log4net.ILog log = log4net.LogManager.GetLogger("logger-name");

    通常来说,我们会以类(class)的类型(type)为参数来调用GetLogger(),以便跟踪我们正在进行日志记录的类。传递的类(class)的类型(type)可以用typeof(Classname)方法来获得,或者可以用如下的反射方法来获得:

    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType

    尽管符号长了一些,但是后者可以用于一些场合,比如获取调用方法的类(class)的类型(type)

    程序中用到了就记录下来,如有什么不对的地方请指出!

  • 相关阅读:
    nginx 代理第三方邮件站点
    mysql启动报错ERROR! The server quit without updating PID file处理
    configure: error: C compiler cannot create executables报错处理
    nginx在反向代理侧实现ssl
    connect() failed (111: Connection refused) while connecting to upstream报错处理
    FastCGI sent in stderr: "Access to the script 'XXX' has been denied (see security.limit_extensions)" 报错处理
    MySQL5.7彻底取消主从复制
    运维三宝
    mailx发邮件报错Error initializing NSS: Unknown error -8015. . . . message not sent.处理
    褚时健:活着是为了什么?
  • 原文地址:https://www.cnblogs.com/goody9807/p/839189.html
Copyright © 2011-2022 走看看