zoukankan      html  css  js  c++  java
  • C# log4net 的日志代码配置

    代码配置编写

    1、引用dll

    2、代码编写配置 

    3、生成的目录

     /// <summary>
        /// 日志记录TXT
        /// </summary>
        public class LogHelper
        {
            public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("Info");
            public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("Error");
            public static bool app = false;
            public LogHelper()
            {
            }
            /// <summary>
            /// 配置
            /// </summary>
            private static void Run()
            {
                try
                {
                    if (app)
                    {
                        return;
                    }
                    app = true;
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null));
                    XmlElement configuration = xmlDoc.CreateElement("configuration");
                    XmlElement root = xmlDoc.CreateElement("log4net");
                    string[] leves = new string[] { "Info", "Error" };
                    foreach (string myleve in leves)
                    {
                        XmlElement appender = xmlDoc.CreateElement("appender");
                        appender.SetAttribute("name", "Tast" + myleve);
                        appender.SetAttribute("type", "log4net.Appender.RollingFileAppender");
                        XmlElement param = xmlDoc.CreateElement("param");
                        param.SetAttribute("name", "Encoding");
                        param.SetAttribute("value", "utf-8");
                        appender.AppendChild(param);
                        XmlElement file = xmlDoc.CreateElement("file");
                        file.SetAttribute("value", "Log\" + myleve + "\");
                        appender.AppendChild(file);
                        XmlElement appendToFile = xmlDoc.CreateElement("appendToFile");
                        appendToFile.SetAttribute("value", "true");
                        appender.AppendChild(appendToFile);
    
                        XmlElement rollingStyle = xmlDoc.CreateElement("rollingStyle");
                        rollingStyle.SetAttribute("value", "Composite");
                        appender.AppendChild(rollingStyle);
    
                        XmlElement maxSizeRollBackups = xmlDoc.CreateElement("maxSizeRollBackups");
                        maxSizeRollBackups.SetAttribute("value", "-1");
                        appender.AppendChild(maxSizeRollBackups);
    
                        XmlElement maximumFileSize = xmlDoc.CreateElement("maximumFileSize");
                        maximumFileSize.SetAttribute("value", "10240MB");
                        appender.AppendChild(maximumFileSize);
    
                        XmlElement lockingModel = xmlDoc.CreateElement("lockingModel");
                        lockingModel.SetAttribute("type", "log4net.Appender.FileAppender+MinimalLock");
                        appender.AppendChild(lockingModel);
    
                        XmlElement staticLogFileName = xmlDoc.CreateElement("staticLogFileName");
                        staticLogFileName.SetAttribute("value", "false");
                        appender.AppendChild(staticLogFileName);
    
                        XmlElement DatePattern = xmlDoc.CreateElement("DatePattern");
                        DatePattern.SetAttribute("value", "yyyy-MM-dd'.txt'");
                        appender.AppendChild(DatePattern);
    
                        XmlElement layout = xmlDoc.CreateElement("layout");
                        layout.SetAttribute("type", "log4net.Layout.PatternLayout");
    
                        XmlElement conversionPattern = xmlDoc.CreateElement("conversionPattern");
                        switch (myleve)
                        {
                            case "Error":
                                conversionPattern.SetAttribute("value", @"%n==========%n【日志级别】%-5level %n【记录时间】%date %n【线程编号】[%thread] %n【执行时间】[%r]毫秒 %n【出错文件】%F %n【出错行号】%L %n【出错的类】%logger 属性[%property{NDC}] %n【错误描述】%message %n【错误详情】%newline");
                                break;
                            case "Info":
                                conversionPattern.SetAttribute("value", @"%n========== %n【记录时间】%date %n【记录的类】%logger 属性[%property{NDC}] %n【内容描述】%message %newline");
                                break;
    
                            default:
                                break;
                        }
    
                        layout.AppendChild(conversionPattern);
                        appender.AppendChild(layout);
    
                        XmlElement logger = xmlDoc.CreateElement("logger");
                        logger.SetAttribute("name", myleve);
                        XmlElement level = xmlDoc.CreateElement("level");
                        level.SetAttribute("value", "ALL");
                        XmlElement appender_ref = xmlDoc.CreateElement("appender-ref");
                        appender_ref.SetAttribute("ref", "Tast" + myleve);
                        logger.AppendChild(level);
                        logger.AppendChild(appender_ref);
                        root.AppendChild(appender);
                        root.AppendChild(logger);
                    }
                    configuration.AppendChild(root);
                    xmlDoc.AppendChild(configuration);
                    byte[] array = Encoding.UTF8.GetBytes(xmlDoc.OuterXml);
                    MemoryStream stream = new MemoryStream(array);
                    StreamReader reader = new StreamReader(stream, Encoding.UTF8);
                    log4net.Config.XmlConfigurator.Configure(reader.BaseStream);
                }
                catch (Exception)
                {
                }
    
            }
            /// <summary>
            /// 信息日志
            /// </summary>
            /// <param name="info"></param>
            public static void WriteLog(string message, string info = "")
            {
    
                Run();
                if (loginfo.IsInfoEnabled)
                {
                    StackTrace trace = new StackTrace();
                    MethodBase methodName = trace.GetFrame(1).GetMethod();
                    loginfo.Info(methodName.ReflectedType.FullName + "=>" + methodName.Name + "=>" + info + message);
                }
            }
            /// <summary>
            /// 信息日志,对象转json
            /// </summary>
            /// <param name="info"></param>
            public static void WriteLogJson(object message, string info = "")
            {
                Run();
                if (loginfo.IsInfoEnabled)
                {
                    StackTrace trace = new StackTrace();
                    MethodBase methodName = trace.GetFrame(1).GetMethod();
                    loginfo.Info(methodName.ReflectedType.FullName + "=>" + methodName.Name + "=>" + info + message.ObjectToJson());
                }
            }
            /// <summary>
            /// 异常日志
            /// </summary> 
            /// <param name="ex"></param>
            public static void WriteError(Exception ex, object message = null, string info = "")
            {
                Run();
                if (logerror.IsErrorEnabled)
                {
                    StackTrace trace = new StackTrace();
                    MethodBase methodName = trace.GetFrame(1).GetMethod();
                    if (message == null)
                    {
                        logerror.Error(methodName.ReflectedType.FullName + "=>" + methodName.Name + "=>" + info + ex.Message, ex);
    
                    }
                    else
                    {
                        logerror.Error(methodName.ReflectedType.FullName + "=>" + methodName.Name + "=>" + info + message, ex);
    
                    }
                }
            }
            /// <summary>
            /// 异常日志,对象转json
            /// </summary>
            /// <param name="ex"></param>
            /// <param name="message"></param>
            public static void WriteErrorJson(Exception ex, object message = null, string info = "")
            {
                Run();
                if (logerror.IsErrorEnabled)
                {
                    StackTrace trace = new StackTrace();
                    MethodBase methodName = trace.GetFrame(1).GetMethod();
                    if (message == null)
                    {
                        logerror.Error(methodName.ReflectedType.FullName + "=>" + methodName.Name + "=>" + info + ex.Message, ex);
                    }
                    else
                    {
    
                        logerror.Error(methodName.ReflectedType.FullName + "=>" + methodName.Name + "=>" + info + message.ObjectToJson(), ex);
    
                    }
                }
            }
        }
  • 相关阅读:
    软件破解系列之OD中断方法
    C#获取类名为Internet_Explorer_Server控件的内容
    C#重启网卡(支持xp和win7)
    软件开发专业技术名词的解释
    一些软件设计的原则
    AntlrWorks的Open没有反应,安装JDK6即可解决
    向大家推荐《思考中医》,这本书对我来说算是中医启蒙了 无为而为
    面对富裕对于贫穷的几乎是天生傲慢我们要呐喊: 我们并不笨,我们只是穷读新科诺贝尔文学奖得主,奥尔罕·帕慕克作品有感 无为而为
    推荐一本书《罗伯特议事规则(Robert's Rules of Order) 》,也许对于想要参与管理的技术人员来说是很有用的 无为而为
    再次发布一个工作地点在上海的Biztalk专家招聘 无为而为
  • 原文地址:https://www.cnblogs.com/wxy520/p/11428557.html
Copyright © 2011-2022 走看看