Exceptionless专注于.net平台提供实时错误和日志报告。主要包括:错误通知、智能分组异常、详细错误报告堆栈跟踪、支持离线、UI查看重要错误和确定优先级、仪表板上的统计信息和趋势、对异常标记为已修复,监视回归、将事件标记为关键等。主要是用于展示、分析;
log4net是一个功能著名的开源日志记录组件。利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中。并且我们还可以记载控制要记载的日志级别,可以记载的日志类别包括:FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)。要想获取最新版本的log4net组件库,可以到官方网站http://logging.apache.org/log4net/下载。现在的最新版本是1.2.10。主要用于自定义收集日志;
下面的例子展示了如何利用log4net配合Exceptionless记录日志 。配置文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration><configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /></configSections><log4net><!--定义输出到文件中--><appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"><!--定义文件存放位置--><file value="log\\" /><!--是否追加到文件,默认为true,通常无需设置--><appendToFile value="true" /><!--多线程时采用最小锁定--><lockingModel type="log4net.Appender.FileAppender+MinimalLock" /><!--变换的形式为日志大小--><!--这种情况下MaxSizeRollBackups和maximumFileSize的节点设置才有意义--><!--<rollingStyle value="Size" />--><!--每天记录的日志文件个数,与maximumFileSize配合使用--><!--<MaxSizeRollBackups value="10" />--><!--每个日志文件的最大大小--><!--可用的单位:KB|MB|GB--><!--不要使用小数,否则会一直写入当前日志--><!--<maximumFileSize value="2MB" />--><!--变换的形式为日期,这种情况下每天只有一个日志--><!--此时MaxSizeRollBackups和maximumFileSize的节点设置没有意义--><rollingStyle value="Date" /><!--每分钟写一个文件--><!--<datePattern value="yyyyMMdd-HHmm" />--><!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置--><datePattern value="yyyyMMdd\\HH'.txt'" /><staticLogFileName value="false" /><param name="MaxSizeRollBackups" value="100" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%newline %n记录时间:%date %n描述:%message" /><!--<conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别: %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n" />--></layout></appender><appender name="exceptionless" type="Exceptionless.Log4net.ExceptionlessAppender,Exceptionless.Log4net" /><root><!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF--><!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录--><!--如果没有定义LEVEL的值,则缺省为DEBUG--><level value="ALL" /><!--文件形式记录日志--><appender-ref ref="RollingLogFileAppender" /><appender-ref ref="exceptionless" /></root></log4net>
</configuration>
Startup
public Startup(IConfiguration configuration){Configuration = configuration;//repository = LogManager.CreateRepository("NETCoreRepository");指定配置文件//XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));}
app.UseExceptionless()
ExceptionlessClient.Default.Configuration.ApiKey = Configuration.GetSection("Exceptionless:ApiKey").Value;// ExceptionlessClient.Default.Configuration.ServerUrl = Configuration.GetSection("Exceptionless:ServerUrl").Value;app.UseExceptionless();
使用
//public IActionResult Index()//{// try// {// // Submit logs// ExceptionlessClient.Default.SubmitLog("Logging made easy");// // You can also specify the log source and log level.// // We recommend specifying one of the following log levels: Trace, Debug, Info, Warn, Error// ExceptionlessClient.Default.SubmitLog(typeof(Program).FullName, "This is so easy", "Info");// ExceptionlessClient.Default.CreateLog(typeof(Program).FullName, "This is so easy", "Info").AddTags("Exceptionless").Submit();// // Submit feature usages// ExceptionlessClient.Default.SubmitFeatureUsage("MyFeature");// ExceptionlessClient.Default.CreateFeatureUsage("MyFeature").AddTags("Exceptionless").Submit();// // Submit a 404// ExceptionlessClient.Default.SubmitNotFound("/somepage");// ExceptionlessClient.Default.CreateNotFound("/somepage").AddTags("Exceptionless").Submit();// // Submit a custom event type// ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Low Fuel", Type = "racecar", Source = "Fuel System" });// throw new Exception("ExceptionDemo 的异常");// }// catch (Exception ex)// {// ex.ToExceptionless().Submit();// }// return View();//}