C # log4net logging code configuration

 

Write code configuration

1, reference dll

2, write code configuration 

3, generated directory

 

 /// <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 " , @ " %% the n-========== [the n-Log Level% -5level% n recording time []% date% n thread number [] [% thread]% n [Execution Time ] [% r] ms% n [error file]% F% n [error line number]% L% n [error class]% logger properties [% property {NDC}]% n [error description% message% n error details] [NEWLINE% " );
                             BREAK ;
                         Case  " Info " : 
                            conversionPattern.SetAttribute ( " value " , @" % ========== the n-record time [the n-%] [% date% n record % logger property class] [% property {NDC}]% n ] [description 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);

                }
            }
        }
    }

 

Guess you like

Origin www.cnblogs.com/wxy520/p/11428557.html