丽水市做网站的,网站推广优化教程,怎么看网站有没有被k,永久免费网站系统在C#中#xff0c;日志库的选择主要取决于项目的具体需求#xff0c;包括性能、易用性、可扩展性等因素。以下是关于NLog、log4net、Serilog和Microsoft.Extensions.Logging的基本介绍和使用示例。 包含如何配置输出日志到当前目录下的log.txt文件及控制台的示例#xff0c;…在C#中日志库的选择主要取决于项目的具体需求包括性能、易用性、可扩展性等因素。以下是关于NLog、log4net、Serilog和Microsoft.Extensions.Logging的基本介绍和使用示例。 包含如何配置输出日志到当前目录下的log.txt文件及控制台的示例以及输出到sqlite数据库
NLog
简介: NLog是一个灵活且易于使用的.NET日志记录库支持多种输出目标如文件、数据库、控制台等和丰富的配置选项。
使用示例:
安装NLog NuGet包。 配置NLog.config文件。
?xml version1.0 encodingutf-8 ?
nlog xmlnshttp://www.nlog-project.org/schemas/NLog.xsdxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancetargetstarget namefile xsi:typeFile fileName${basedir}/log.txt /target namesqlite xsi:typeDatabaseconnectionStringData Sourcelog.db;ModeReadWriteCreate;commandTextINSERT INTO Log (TimeStamp, Level, Message) VALUES (time_stamp, level, message)parameter nametime_stamp layout${date:universalTimetrue:formatyyyy-MM-dd HH\:mm\:ss.fff} /parameter namelevel layout${level} /parameter namemessage layout${message} //targettarget nameconsole xsi:typeConsole //targetsruleslogger name* minLevelInfo writeTofile,sqlite,console //rules
/nlogusing NLog;class Program
{private static Logger logger LogManager.GetCurrentClassLogger();static void Main(string[] args){logger.Info(这是一个信息日志);}
}也可以设置时间 类型分开
?xml version1.0 encodingutf-8 ?
nlog xmlnshttp://www.nlog-project.org/schemas/NLog.xsdxmlns:xsihttp://www.w3.org/2001/XMLSchema-instanceautoReloadtruethrowConfigExceptionstrueinternalLogLevelOffinternalLogFileC:\temp\internal-nlog.txttargets!-- Trace级别日志输出到文件 --target xsi:typeFilenameTraceFilefileName${basedir}/logs/${shortdate}_Trace.loglayout${longdate}|${logger}|${uppercase:${level}}|${message} ${exception} /!-- Debug级别日志输出到文件 --target xsi:typeFilenameDebugFilefileName${basedir}/logs/${shortdate}_Debug.loglayout${longdate}|${logger}|${uppercase:${level}}|${message} ${exception} /!-- Info级别日志输出到文件 --target xsi:typeFilenameInfoFilefileName${basedir}/logs/${shortdate}_Info.loglayout${longdate}|${logger}|${uppercase:${level}}|${message} ${exception} /!-- Warn级别日志输出到文件 --target xsi:typeFilenameWarnFilefileName${basedir}/logs/${shortdate}_Warn.loglayout${longdate}|${logger}|${uppercase:${level}}|${message} ${exception} /!-- Error级别日志输出到文件 --target xsi:typeFilenameErrorFilefileName${basedir}/logs/${shortdate}_Error.loglayout${longdate}|${logger}|${uppercase:${level}}|${message} ${exception} /!-- Fatal级别日志输出到文件 --target xsi:typeFilenameFatalFilefileName${basedir}/logs/${shortdate}_Fatal.loglayout${longdate}|${logger}|${uppercase:${level}}|${message} ${exception} //targetsrules!-- Microsoft.*表示通配符所有微软日志将被过滤 --logger nameMicrosoft.* minlevelTrace finaltrue /logger name* minlevelTrace writeToTraceFile /logger name* minlevelDebug writeToDebugFile /logger name* minlevelInfo writeToInfoFile /logger name* minlevelWarn writeToWarnFile /logger name* minlevelError writeToErrorFile /logger name* minlevelFatal writeToFatalFile //rules
/nlog另外还可以打印成html格式
?xml version1.0 encodingutf-8 ?
nlog xmlnshttp://www.nlog-project.org/schemas/NLog.xsdxmlns:xsihttp://www.w3.org/2001/XMLSchema-instanceautoReloadtruethrowConfigExceptionstrueinternalLogLevelOffinternalLogFileC:\temp\internal-nlog.txttargets!-- Trace级别日志输出到html文件 --target xsi:typeFilenameTraceFilefileName${basedir}/logs/${shortdate}_Trace.htmllayout【记录时间】${longdate} lt;brgt;【文名名称】${logger} lt;brgt;【日志级别】${uppercase:${level}} lt;brgt;【日志内容】${message} ${exception} lt;hr size2 colorredgt; //targetsrules!-- Microsoft.*表示通配符所有微软日志将被过滤 --logger nameMicrosoft.* minlevelTrace finaltrue /logger name* minlevelTrace writeToTraceFile //rules
/nlog注意事项将文件包含到项目中后要修改属性可复制
log4net
简介: log4net是另一个流行的日志库源于Apache的log4j项目支持多种日志级别、多种输出目的地和灵活的配置。
使用示例:
安装log4net NuGet包。 配置log4net配置节。 配置 (在App.config或Web.config内):
log4net!-- FileAppender和ConsoleAppender配置 --appender nameFileAppender typelog4net.Appender.FileAppenderfile valuelog.txt /layout typelog4net.Layout.PatternLayoutconversionPattern value%date [%thread] %-5level %logger - %message%newline //layout/appenderappender nameConsoleAppender typelog4net.Appender.ConsoleAppenderlayout typelog4net.Layout.PatternLayoutconversionPattern value%date{ABSOLUTE} %level %logger - %message%newline //layout/appender!-- SQLite Appender 配置示例 --appender nameSQLiteAppender typelog4net.Appender.AdoNetAppenderbufferSize value1 /connectionType valueMicrosoft.Data.Sqlite.SqliteConnection, Microsoft.Data.Sqlite /connectionString valueData Sourcelog.db;ModeReadWriteCreate; /commandText valueINSERT INTO Log (TimeStamp, Level, Message) VALUES (log_date, log_level, message) /parameterparameterName valuelog_date /dbType valueDateTime /layout typelog4net.Layout.RawTimeStampLayout //parameterparameterparameterName valuelog_level /dbType valueString /size value50 /layout typelog4net.Layout.PatternLayoutconversionPattern value%p //layout/parameterparameterparameterName valuemessage /dbType valueString /size value255 /layout typelog4net.Layout.PatternLayoutconversionPattern value%m //layout/parameter/appender!-- 添加SQLiteAppender到root --rootlevel valueINFO /appender-ref refFileAppender /appender-ref refConsoleAppender /!-- 现有Appender参照 --appender-ref refSQLiteAppender //root
/log4net初始化并使用。
using log4net;
using log4net.Config;class Program
{private static readonly ILog log LogManager.GetLogger(typeof(Program));static Program(){XmlConfigurator.Configure();}static void Main(string[] args){log.Info(这是一个信息日志);}
}Serilog
简介: Serilog专注于结构化日志记录特别适合现代应用尤其是那些需要高效分析和搜索日志的应用。
使用示例:
安装Serilog及相应的sink包如Serilog.Sinks.Console。 配置Serilog。
using Serilog;class Program
{static void Main(string[] args){Log.Logger new LoggerConfiguration().WriteTo.Console().CreateLogger();Log.Information(这是一个信息日志);}
}Microsoft.Extensions.Logging
简介: 这是.NET Core及更高版本中提供的日志框架抽象层不直接提供日志实现但易于与其他日志库集成如Serilog、NLog、log4net等。
使用示例:
安装Microsoft.Extensions.Logging NuGet包及具体日志库的Provider如Serilog.AspNetCore。 配置依赖注入。
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Serilog;class Program
{static void Main(string[] args){Log.Logger new LoggerConfiguration().WriteTo.Console().CreateLogger();using var serviceScope new ServiceCollection().AddLogging(loggingBuilder loggingBuilder.AddSerilog(Log.Logger)).BuildServiceProvider().CreateScope();var logger serviceScope.ServiceProvider.GetServiceILoggerProgram();logger.LogInformation(这是一个信息日志);}
}区别:
配置灵活性: NLog和log4net都支持详细的XML配置文件适合复杂的日志策略。Serilog则通过代码配置更加灵活特别适合动态配置。Microsoft.Extensions.Logging作为一个抽象层配置灵活性取决于所集成的具体日志库。 日志格式: Serilog强调结构化日志便于机器解析和分析。其他库也支持结构化日志但Serilog在这方面更为强大。 集成性: Microsoft.Extensions.Logging作为.NET Core推荐的日志抽象易于与其他框架和服务集成特别是ASP.NET Core应用。 性能: 性能差异可能因具体使用场景而异但一般来说Serilog在结构化日志输出时表现较好而NLog和log4net在大规模日志处理时也有很好的性能表现。 选择哪个库应考虑项目需求、团队熟悉度以及生态系统的兼容性。