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