聊城 网站制作,深圳做网站外包公司,天津seo关键词排名优化,国家市场监督管理局官网net自带日志与Serilog、log4Net的异同
1、比较。 .NET自带的日志功能、Serilog和log4Net都是用于记录日志的库#xff0c;但它们之间存在一些差异。具体分析如下#xff1a; 相同点#xff1a; 目的#xff1a;它们都提供了在开发过程中记录应用程序运行情况的功能#x…net自带日志与Serilog、log4Net的异同
1、比较。 .NET自带的日志功能、Serilog和log4Net都是用于记录日志的库但它们之间存在一些差异。具体分析如下 相同点 目的它们都提供了在开发过程中记录应用程序运行情况的功能便于开发者追踪和调试问题。配置性三者均支持通过配置文件或代码进行灵活的日志记录设置。扩展性它们都可以根据需要自定义日志格式和输出目标。 不同点 灵活性和可扩展性Serilog是一个高度可扩展的日志框架它支持多种输出格式包括控制台、文件、Elasticsearch等。它的特点是可配置性强支持链式调用可以自定义日志格式和输出方式。而log4Net也是一个成熟的日志框架支持多种日志级别和输出目标但在性能方面可能不如Serilog。集成度Serilog可以轻松与Microsoft的内置日志接口集成在一起这使得测试应用程序变得更加容易。而log4Net作为老牌的日志库虽然集成度也很高但在新兴的.NET Core项目中可能需要更多的配置工作。静态类使用Serilog提供了静态的Log类这可能会违反依赖反转原则但在某些情况下如Program类中可能是有用的。而.NET自带的日志功能则依赖于Microsoft.Extensions.Logging这是一个非静态的日志接口更加符合现代软件设计的依赖注入原则。 综上所述Serilog在性能、可配置性和灵活性方面表现较好而log4Net作为一个成熟的日志框架拥有稳定的用户群和丰富的文档资源。而.NET自带的日志功能则与.NET生态系统紧密集成为开发者提供了一个开箱即用的日志解决方案。在选择日志库时应根据项目的具体需求、团队的熟悉程度以及维护的便利性来决定。 2、最简单方式。测试自带
/// summary
/// 测试连接1
/// 异常
/// /summary
/// param namet字符串/param
/// returns/returns
[HttpGet]
[ApiVersionCustomRoute(SwaggerDocSettings.ApiVersions.v1)]
public string Test(string t)
{int i 0;try{i int.Parse(t);}catch (Exception ex){_logger.LogError(Test接口异常 ex.Message.ToString());return 报错,不可转int类型;}return 【Test】OK.输入的是 i.ToString();
} 2.1、效果 3、log4net 3.1、安装相应包log4net、Microsoft.Extensions.Logging.Log4Net.AspNetCore 3.2、添加配置文件log4net.config。然后右击属性改为始终复制到目录。
?xml version1.0 encodingutf-8 ?
log4netappender nameRollingFile typelog4net.Appender.RollingFileAppender!--日志输入路径--file valueLogs/Log- /!--按日期命名文件--datePattern valueyyyy-MM-dd.log /!--是否只写到一个文件中--staticLogFileName valuefalse /appendToFile valuetrue /rollingStyle valueComposite /!--最多产生文件数超过的话保留最新--maxSizeRollBackups value1000 /maximumFileSize value10MB /!--防止多线程时不能写Log,官方说线程非安全--lockingModel typelog4net.Appender.FileAppenderMinimalLock /layout typelog4net.Layout.PatternLayout!--时间、线程、级别、、信息、换行、堆栈信息、换行、--conversionPattern value%date [%thread] %-5level %logger - %message%newline%exception /header value#xA;----------------------header--------------------------#xA; /footer value#xA;----------------------footer--------------------------#xA;//layout/appenderrootlevel valueDEBUG /!--上边已配置的appender节点的名称--appender-ref refRollingFile //root
/log4net 3.3、注入服务
builder.Host.ConfigureLogging(loggingBuilder
{loggingBuilder.AddLog4Net();
}); 3.4、测试 public ApiResult Test(string t){int i 0;try{i int.Parse(t);}catch (Exception ex){string str Test接口异常 ex.Message.ToString();//_logger.LogError(str); _logger.LogError(1、 str, ex);_logger.LogError(2、 str 【】 ex.ToString());_logger.LogError(3、 str);_logger.LogError(ex, 4、 str);return ApiResultHelper.Error(转化失败, ex.Message.ToString());}i int.Parse(t);return ApiResultHelper.Success(转化成功);} 3.5、输出成功建议使用第4条的计入方式 3.6、网上还有很多使用帮助类的形式添加日志记录但是我感觉没有这种简单相当于替换了原有的。但是帮助类那种可拓展的更丰富吧看个人使用情况。