zoukankan      html  css  js  c++  java
  • Log4net用法

    日记是我们在程序中经常用到的,故记于此

    首先要下载Log4net.dll

    官方网站:http://logging.apache.org/log4net/

    vs里创建一个c#控制台程序,在App.config里设置

    这里设置的目的,有两个,一为了得到log4net.config的文件,另一个就是日记的开关,日记是否开启

    现在看主函数里怎么用

    复制代码
    using log4net.Config;
    using log4net;
    
    namespace Test {
        class Program {
           
            static void Main(string[] args) {
    
                //初始化日志文件 
                string state = ConfigurationManager.AppSettings["IsWriteLog"];
                //判断是否开启日志记录
                if (state == "1") {
                    var path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase +
                               ConfigurationManager.AppSettings["log4net"];
                    var fi = new System.IO.FileInfo(path);
                    log4net.Config.XmlConfigurator.Configure(fi);
                }
    
                LogHelper.WriteLog("holle world");
    
               
            }
    
           
        }
    }
    复制代码
    string state = ConfigurationManager.AppSettings["IsWriteLog"];这个是获取日记的开关

     var path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase +
                               ConfigurationManager.AppSettings["log4net"];
                    var fi = new System.IO.FileInfo(path);
                    log4net.Config.XmlConfigurator.Configure(fi);
    上面fi就是log4net.config的文件位置,然后
     log4net.Config.XmlConfigurator.Configure(fi);


    然后就是LogHelper类了,这个是个简单的日记帮助类
    复制代码
        /// <summary>  
        /// LogHelper的摘要说明。   
        /// </summary>   
        public class LogHelper {
            /// <summary>
            /// 静态只读实体对象info信息
            /// </summary>
            public static readonly log4net.ILog Loginfo = log4net.LogManager.GetLogger("loginfo");
            /// <summary>
            ///  静态只读实体对象error信息
            /// </summary>
            public static readonly log4net.ILog Logerror = log4net.LogManager.GetLogger("logerror");
    
            /// <summary>
            ///  添加info信息
            /// </summary>
            /// <param name="info">自定义日志内容说明</param>
            public static void WriteLog(string info) {
                try {
                    if (Loginfo.IsInfoEnabled) {
                        Loginfo.Info(info);
                    }
                } catch { }
            }
    
    
            /// <summary>
            /// 添加异常信息
            /// </summary>
            /// <param name="info">自定义日志内容说明</param>
            /// <param name="ex">异常信息</param>
            public static void WriteLog(string info, Exception ex) {
                try {
                    if (Logerror.IsErrorEnabled) {
                        Logerror.Error(info, ex);
                    }
                } catch { }
            }
        }
    复制代码

    最后是log4net.config设置文件

    复制代码
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
      </configSections>
      <log4net>
        <logger name="logerror">
          <level value="ERROR" />
          <appender-ref ref="ErrorAppender" />
        </logger>
        <logger name="loginfo">
          <level value="INFO" />
          <appender-ref ref="InfoAppender" />
        </logger>
        <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
          <!--设置日志存储路径-->
          <param name="File" value="Data//WebLog//LogError//" />
          <!--是否追加到文件-->
          <param name="AppendToFile" value="true" />
          <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
          <param name="MaxSizeRollBackups" value="100" />
          <param name="MaxFileSize" value="1024" />
          <!--是否只写到一个文件中-->
          <param name="StaticLogFileName" value="false" />
          <!--这是按日期产生文件夹,并在文件名前也加上日期-->
          <param name="DatePattern" value="yyyyMM/dd&quot;.log&quot;" />
          <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
          <param name="RollingStyle" value="Date" />
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异常位置:[%thread] (%file:%line) %n消息描述:%message%n异常:%exception%n%n " />
          </layout>
        </appender>
        <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
          <!--设置日志存储路径-->
          <param name="File" value="Data//WebLog//LogInfo//" />
          <!--是否追加到文件-->
          <param name="AppendToFile" value="true" />
          <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
          <param name="MaxSizeRollBackups" value="100" />
          <param name="MaxFileSize" value="1024" />
          <!--是否只写到一个文件中-->
          <param name="StaticLogFileName" value="false" />
          <!--这是按日期产生文件夹,并在文件名前也加上日期-->
          <param name="DatePattern" value="yyyyMM/dd&quot;.log&quot;" />
          <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
          <param name="RollingStyle" value="Date" />
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n消息描述:%c [%x] %n%m %n " />
          </layout>
        </appender>
      </log4net>
    </configuration>
    复制代码

    然后就可以了,日记就在binDebugDataWebLogLogInfo下

  • 相关阅读:
    xcode快捷键大全(转)
    a 和an 的用法区别
    如何在lion系统下安装Xcode 3.2.x版本
    xcode3.2.6升级至4.0.2经验加教训总结(转)
    堆与栈的关系与区别(转)
    [点评]谷歌发布Android 2.3 点评八大亮点
    浅谈关于nil和 null区别及相关问题(转)
    ObjectiveC中的继承与复合技术(转)
    MyEclipse 8.0.0 in Fedora 12
    如何判断两个链表相交及找到第一个相交点
  • 原文地址:https://www.cnblogs.com/roak/p/14245635.html
Copyright © 2011-2022 走看看