log4net写入数据库

2018-12-06  本文已影响14人  高调的小丑

其他部分和log4net使用的一样,这边贴出ADONetAppender的appender节

<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
  <bufferSize value="10" />
  <connectionType value="System.Data.SqlClient.SqlConnection, System.Data,Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <connectionString value="data source=.;initial catalog=LogSystem;integratedsecurity=false;persist security info=True;User ID=sa;Password=sa" />
  <commandText value="INSERT INTO ErrorLog ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@date, @thread, @level, @logger, @message, @exception)" />
      
  <parameter>
    <parameterName value="@date" />
    <dbType value="DateTime" />
    <layout type="log4net.Layout.RawTimeStampLayout" />
  </parameter>
  <parameter>
    <parameterName value="@thread" />
    <dbType value="String" />
    <size value="100" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%t" />
    </layout>
  </parameter>
  <parameter>
    <parameterName value="@level" />
    <dbType value="String" />
    <size value="200" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%p" />
    </layout>
  </parameter>
  <parameter>
    <parameterName value="@logger" />
    <dbType value="String" />
    <size value="500" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%logger" />
    </layout>
  </parameter>
  <parameter>
    <parameterName value="@message" />
    <dbType value="String" />
    <size value="3000" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%m" />
    </layout>
  </parameter>
  <parameter>
    <parameterName value="@exception" />
    <dbType value="String" />
    <size value="4000" />
    <layout type="log4net.Layout.ExceptionLayout" />
  </parameter>
</appender>

在对应的数据库中创建表

CREATE TABLE [dbo].[ErrorLog](   
[Id] [bigint] IDENTITY(1,1) NOT NULL,   
[Date] [datetime] NOT NULL,   
[Thread] [nvarchar](100) NOT NULL,   
[Level] [nvarchar](200) NOT NULL,   
[Logger] [nvarchar](500) NOT NULL,   
[Message] [nvarchar](3000) NOT NULL,   
[Exception] [nvarchar](4000) NULL)
static void Main(string[] args)
{
    log4net.ILog log=log4net.LogManager.GetLogger("testApp.Logging");//获取一个日志记录器 
    
    string assemblyFilePath = Assembly.GetExecutingAssembly().Location;
    string assemblyDirPath = Path.GetDirectoryName(assemblyFilePath);
    DirectoryInfo pathInfo = new DirectoryInfo(assemblyDirPath);
    string configFilePath = pathInfo.Parent.Parent.FullName + "//log4net.config";
    Console.WriteLine(configFilePath);
    log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(configFilePath));
    
    log.Debug("开始调试");
    log.Info("这是一个消息");
    log.Warn("这是一个警告");
    log.Error("Error", new Exception("这是一个异常"));
    
    Console.ReadKey();
}

运行之后结果


查询结果.png

参考文章:
https://www.cnblogs.com/daretodream/p/3509027.html

上一篇 下一篇

猜你喜欢

热点阅读