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);

                }
            }
        }
    }

猜你喜欢

转载自www.cnblogs.com/wxy520/p/11428557.html
今日推荐