zoukankan      html  css  js  c++  java
  • C# 将文件嵌入DLL 。Log4net 配置

    最近在弄使用Log4net记录日志。

    将配置文件封装到的DLL中。

    封装步骤:

    1.将配置文件添加到类库中。

    2.在配置文件上右键,选择属性。

    3.

    此时生成类库。DLL中就存在该配置文件啦。如图:

    在类库中使用该配置文件:

          //获取配置文件全称
               string str = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".Log4Net.config";
               //读取配置文件
               System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(str);
               log4net.Config.XmlConfigurator.Configure(stream);

    附上使用Log4net全部代码

    1.配置文件:Log4net.config

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <log4net>
        <logger name="ErrorLog">
          <level value="ERROR"></level>
          <appender-ref ref="ErrorLog"></appender-ref>
        </logger>
        
       
    
        <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="ErrorLog/" />
          <param name="AppendToFile" value="true" />
          <!--是否默认文件名-->
          <param name="StaticLogFileName" value="false" />
          <!--变换的形式为日期-->
    
          <rollingStyle value="Date" />
    
          <!--日期的格式,每天换一个文件记录-->
    
          <datePattern value="yyyyMMdd.TXT" />
          <layout type="log4net.Layout.PatternLayout">
          <param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" />
          </layout>
        </appender>
    
        <logger name="InfoLog">
          <level value="INFO"></level>
          <appender-ref ref="InfoLog"></appender-ref>
        </logger>
        <appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="InfoLog\" />
          <param name="AppendToFile" value="true" />
          <!--是否默认文件名-->
          <param name="StaticLogFileName" value="false" />
          <!--变换的形式为日期-->
    
          <rollingStyle value="Date" />
    
          <!--日期的格式,每天换一个文件记录-->
    
          <datePattern value="yyyyMMdd.TXT" />
    
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" />
          </layout>
        </appender>
    
    
        <logger name="WarnLog">
          <level value="INFO"></level>
          <appender-ref ref="WarnLog"></appender-ref>
        </logger>
        <appender name="WarnLog" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="WarnLog\" />
          <param name="AppendToFile" value="true" />
          <!--是否默认文件名-->
          <param name="StaticLogFileName" value="false" />
          <!--变换的形式为日期-->
    
          <rollingStyle value="Date" />
    
          <!--日期的格式,每天换一个文件记录-->
    
          <datePattern value="yyyyMMdd.TXT" />
    
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" />
          </layout>
        </appender>
    
        <logger name="FatalLog">
          <level value="Fatal"></level>
          <appender-ref ref="FatalLog"></appender-ref>
        </logger>
        <appender name="FatalLog" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="FatalLog\" />
          <param name="AppendToFile" value="true" />
          <!--是否默认文件名-->
          <param name="StaticLogFileName" value="false" />
          <!--变换的形式为日期-->
    
          <rollingStyle value="Date" />
    
          <!--日期的格式,每天换一个文件记录-->
    
          <datePattern value="yyyyMMdd.TXT" />
    
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" />
          </layout>
        </appender>
        
        
        
      </log4net>
    
    </configuration>

    2.日志帮助类:LogHelper

       public class LogHelper
        {
            public    static  LogHelper logHelper=new LogHelper();
           private  readonly static ILog _errorLog = LogManager.GetLogger("ErrorLog");
           private readonly static ILog _infoLog = LogManager.GetLogger("InfoLog");
           private readonly static ILog _warnLog = LogManager.GetLogger("WarnLog");
           private readonly static ILog _fatalLog = LogManager.GetLogger("FatalLog");
           private  LogHelper()
           {
               //获取配置文件全称
               string str = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".Log4Net.config";
               //读取配置文件
               System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(str);
               log4net.Config.XmlConfigurator.Configure(stream);
           }
    
            /// <summary>
            /// 普通日志信息
            /// </summary>
            /// <param name="msg">日志内容</param>
            /// <param name="stackTrace">位置跟踪</param>
            public  void InfoLog(string msg, string stackTrace)
            { 
                Log(LogType.InfoLog, msg, stackTrace);
            }
    
            /// <summary>
            /// 警告级日志信息
            /// </summary>
            /// <param name="msg">日志内容</param>
            /// <param name="stackTrace">位置跟踪</param>
            public  void WarnLog(string msg, string stackTrace)
            {
                Log(LogType.WarnLog, msg, stackTrace);
            }
    
            /// <summary>
            /// Error级日志信息
            /// </summary>
            /// <param name="msg">日志内容</param>
            /// <param name="stackTrace">位置跟踪</param>
            public  void ErrorLog(string msg, string stackTrace)
            {
                Log(LogType.ErrorLog, msg, stackTrace);
            }
            /// <summary>
            /// 致命级日志信息
            /// </summary>
            /// <param name="msg">日志内容</param>
            /// <param name="stackTrace">位置跟踪</param>
            public  void FatalLog(string msg, string stackTrace)
            {
    
                Log(LogType.FatalLog, msg, stackTrace);
            }
    
            /// <summary>
            /// 记录日志通用方法 
            /// </summary>
            /// <param name="ltype">所添加日志类型,LogType枚举</param>
            /// <param name="logs">所添加的日志信息</param>
            public  void Log(LogType ltype, params string[] logs)
            {
                string msg = string.Join("
    ", logs);
                switch (ltype)
                {
                    case LogType.InfoLog: if (_infoLog.IsInfoEnabled) _infoLog.Fatal(msg);
                        break;
                    case LogType.WarnLog: if (_warnLog.IsWarnEnabled) _warnLog.Fatal(msg);
                        break;
                    case LogType.ErrorLog: if (_errorLog.IsErrorEnabled) _errorLog.Fatal(msg);
                        break;
                    case LogType.FatalLog: if (_fatalLog.IsFatalEnabled) _fatalLog.Fatal(msg);
                        break;
                }
            }
        }
    
        public enum LogType
        {
            /// <summary>
            /// 普通日志
            /// </summary>
            InfoLog = 1,
            /// <summary>
            /// 警告级别日志
            /// </summary>
            WarnLog = 2,
            /// <summary>
            /// 错误级别日志
            /// </summary>
            ErrorLog = 4,
            /// <summary>
            /// 致命级别日志
            /// </summary>
            FatalLog = 8
        }
  • 相关阅读:
    如何优雅的进行表结构设计
    获取windows身份认证网站页面内容
    angularjs filter 详解
    OpenFileDialog 害人的RestoreDirectory
    iscroll5 版本下的 上拉,下拉 加载数据
    EasyUI Combotree 只允许选择 叶子节点
    国内5款优秀的WEB前端框架
    Serv-U无法连接到服务器127.0.0.1,端口43958 FTP服务器不能启动
    Directory.GetCurrentDirectory和Application.StartupPath的区别
    Winform 窗体设计器 无法识别重复成员变量声明的问题
  • 原文地址:https://www.cnblogs.com/mrma/p/4482059.html
Copyright © 2011-2022 走看看