Log4net.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <log4net> <!--日志保存到文件里面 txt--> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock"/> <!--日志路径 网站根目录下面的logs--> <param name= "File" value= "ZoveLog\\"/> <!--是否是向文件中追加日志--> <param name= "AppendToFile" value= "true"/> <!--保证在日志分割时,新日志的序号会添加在后缀名之前--> <param name="preserveLogFileNameExtension" value="true"/> <!--定义文件最大个数,超过按顺序删除--> <param name="MaxSizeRollBackups" value="-1"/> <!--日志文件名是否是固定不变的--> <param name= "StaticLogFileName" value= "false"/> <!--日志文件名称及保存位置--> <param name= "DatePattern" value= "yyyyMMdd".log""/> <!--每个日志文件的最大大小--> <maximumFileSize value="5MB"/> <!--日志格式--> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%newline%newline【日志时间】:%d 【线程ID】:%thread %newline【日志级别】:%-5p %newline【日志对象】:%logger %newline【日志内容】:%m" /> </layout> </appender> <root> <!--配置可输出日志级别--> <level value="all"/> <!--应用配置--> <appender-ref ref="RollingLogFileAppender"/> </root> </log4net> </configuration>
/// <summary> /// Log4Net日志记录辅助类 /// </summary> public class LogHelper { private static readonly ILog Log; static LogHelper() { XmlConfigurator.ConfigureAndWatch(new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "Log4net.config")); Log = LogManager.GetLogger(typeof(LogHelper)); } /// <summary> /// 记录调试信息 /// </summary> /// <param name="message">信息</param> public static void Debug(object message) { Log.Debug(message); } /// <summary> /// 记录警告信息 /// </summary> /// <param name="message">信息</param> public static void Warn(object message) { Log.Warn(message); } /// <summary> /// 记录错误信息 /// </summary> /// <param name="message">信息</param> public static void Error(object message) { Log.Error(message); } /// <summary> /// 记录重要提示信息 /// </summary> /// <param name="message">信息</param> public static void Info(object message) { Log.Info(message); } /// <summary> /// 记录信息和异常信息 /// </summary> /// <param name="message">错误信息</param> /// <param name="ex">异常对象</param> public static void Debug(object message, Exception ex) { Log.Debug(message, ex); } /// <summary> /// 记录信息和异常信息 /// </summary> /// <param name="message">错误信息</param> /// <param name="ex">异常对象</param> public static void Warn(object message, Exception ex) { Log.Warn(message, ex); } /// <summary> /// 记录信息和异常信息 /// </summary> /// <param name="message">错误信息</param> /// <param name="ex">异常对象</param> public static void Error(object message, Exception ex) { Log.Error(message, ex); } /// <summary> /// 记录信息和异常信息 /// </summary> /// <param name="message">错误信息</param> /// <param name="ex">异常对象</param> public static void Info(object message, Exception ex) { Log.Info(message, ex); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构