首页 > 代码库 > Exceptionless搭配log4net记录日志

Exceptionless搭配log4net记录日志

接上篇:

Exceptionless 本地部署

在部署完成后可以使用log4net搭配Exceptionless来记录日志。

过程很简单,使用Nuget安装Exceptionless.Log4net,安装完成后会自动打开一个readme.txt,里面有介绍使用,其实就是把下面这段配置放到log4net的配置中:

<appender name="exceptionless" type="Exceptionless.Log4net.ExceptionlessAppender,Exceptionless.Log4net" />

在项目中添加配置文件log4net.config并设置始终复制到输出目录:

技术分享
<?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=http://www.mamicode.com/"log\\"/>      <!--是否追加到文件,默认为true,通常无需设置-->      <appendToFile value=http://www.mamicode.com/"true"/>      <!--多线程时采用最小锁定-->      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>      <!--变换的形式为日志大小-->      <!--这种情况下MaxSizeRollBackups和maximumFileSize的节点设置才有意义-->      <!--<rollingStyle value=http://www.mamicode.com/"Size"/>-->      <!--每天记录的日志文件个数,与maximumFileSize配合使用-->      <!--<MaxSizeRollBackups value=http://www.mamicode.com/"10"/>-->      <!--每个日志文件的最大大小-->      <!--可用的单位:KB|MB|GB-->      <!--不要使用小数,否则会一直写入当前日志-->      <!--<maximumFileSize value=http://www.mamicode.com/"2MB"/>-->      <!--变换的形式为日期,这种情况下每天只有一个日志-->      <!--此时MaxSizeRollBackups和maximumFileSize的节点设置没有意义-->      <rollingStyle value=http://www.mamicode.com/"Date"/>      <!--每分钟写一个文件-->      <!--<datePattern value=http://www.mamicode.com/"yyyyMMdd-HHmm" />-->      <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->      <datePattern value=http://www.mamicode.com/"yyyyMMdd\\HH‘.txt‘"/>      <staticLogFileName value=http://www.mamicode.com/"false"/>      <param name="MaxSizeRollBackups" value=http://www.mamicode.com/"100"/>      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value=http://www.mamicode.com/"%newline %n记录时间:%date %n描述:%message"/>        <!--<conversionPattern value=http://www.mamicode.com/"%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=http://www.mamicode.com/"ALL"/>      <!--文件形式记录日志-->      <appender-ref ref="RollingLogFileAppender"/>      <appender-ref ref="exceptionless"/>    </root>  </log4net></configuration>
View Code

修改程序代码如下:

static void Main(string[] args)        {            FileInfo fi = new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.config"));            XmlConfigurator.ConfigureAndWatch(fi);            ILog logger= LogManager.GetLogger(typeof(Program));            ExceptionlessClient.Default.Startup("oXX5BJqhS30ni045BqthqJtiSnpB0naMactfmYmI");            //var client = new ExceptionlessClient(c => {            //    c.ApiKey = "oXX5BJqhS30ni045BqthqJtiSnpB0naMactfmYmI";            //    c.ServerUrl = "http://localhost:8004";            //});            try            {                throw new Exception("test exception "+DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss"));            }            catch (Exception ex)            {                //client.SubmitException(ex);                //ex.ToExceptionless().Submit();                logger.Error(ex);                Console.WriteLine("error send");            }            Console.ReadKey();        }

在http://localhost:8004/#/type/log/dashboard中就能看到日志内容了:

技术分享

Exceptionless搭配log4net记录日志