使用Log4Net
来源:互联网 发布:档案数据异地备份制度 编辑:程序博客网 时间:2024/06/06 04:24
http://blog.csdn.net/csethcrm/article/details/52858683
使用Log4Net - 文件日志
使用Log4Net - 文件日志 和 SqlServer日志
使用Log4Net - 文件日志 和 Oracle日志
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="log\\"/>
- <appendToFile value="true"/>
- <rollingStyle value="Date"/>
- <datePattern value="yyyyMM\\yyyyMMdd'.txt'"/>
- <staticLogFileName value="false"/>
- <param name="MaxSizeRollBackups" value="100"/>
- <layout type="log4net.Layout.PatternLayout">
-
- <conversionPattern value="==== %date [%thread] %-5level ==== : %newline%message%newline%newline" />
- </layout>
- </appender>
-
-
- <appender name="AdoNetAppender_SqlServer" type="log4net.Appender.ADONetAppender">
-
-
- <bufferSize value="0" />
-
- <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-
- <connectionString value="server=.;database=Log4Net;uid=sa;password=123.com;"/>
-
- <commandText value="INSERT INTO Log4Net ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
-
- <parameter>
- <parameterName value="@log_date" />
- <dbType value="DateTime" />
- <layout type="log4net.Layout.RawTimeStampLayout" />
- </parameter>
-
- <parameter>
- <parameterName value="@thread" />
- <dbType value="String" />
- <size value="255" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%thread" />
- </layout>
- </parameter>
-
- <parameter>
- <parameterName value="@log_level" />
- <dbType value="String" />
- <size value="50" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%level" />
- </layout>
- </parameter>
-
- <parameter>
- <parameterName value="@logger" />
- <dbType value="String" />
- <size value="255" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%logger" />
- </layout>
- </parameter>
-
- <parameter>
- <parameterName value="@message" />
- <dbType value="String" />
- <size value="4000" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%message" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value="@exception" />
- <dbType value="String" />
- <size value="2000" />
- <layout type="log4net.Layout.ExceptionLayout" />
- </parameter>
- </appender>
-
-
- <root>
- <level value="ALL" />
- <appender-ref ref="RollingLogFileAppender" />
- <appender-ref ref="AdoNetAppender_SqlServer" />
- </root>
-
- </log4net>
- </configuration>
Program.cs代码,如下:- using log4net;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
- [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Content/Config/Log4Net.config", Watch = true)]
- namespace Com.No1.Log4Net.SqlServer
- {
- class Program
- {
- protected static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
- static void Main(string[] args)
- {
- for (int i = 0; i < 101; i++)
- {
- logger.Debug("Test" + i);
- }
- }
- }
- }
数据库创建表脚本:
- CREATE TABLE [dbo].[Log4Net](
- [Id] [bigint] IDENTITY(1,1) NOT NULL,
- [Date] [datetime2](7) NULL,
- [Thread] [varchar](255) NULL,
- [Level] [varchar](255) NULL,
- [Logger] [varchar](255) NULL,
- [Message] [varchar](255) NULL,
- [Exception] [varchar](255) NULL,
- CONSTRAINT [PK_Log4Net] PRIMARY KEY CLUSTERED
- (
- [Id] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
-
- GO
结果,如下图:
测试时注意修改节点 : connectionString 修改为 自己测试环境的连接字符串
注意点:
<!--bufferSize 为缓冲区大小,只有日志记录超设定值才会一块写入到数据库 -->
<!-- 注意bufferSize 参数在测试环境建议设置为 0 ,在生产环境建议设置为100 -->
<bufferSize value="0" />
如果测试环境设置成 100 ,则缓冲区 超过100条 消息才会 写入SqlServer库,这个很容易忘记,造成不必要的问题。测试环境 请设置成 0
测试代码,点击下载!
使用Log4Net - 文件日志
使用Log4Net - 文件日志 和 SqlServer日志
使用Log4Net - 文件日志 和 Oracle日志
使用Log4Net - 文件日志
使用Log4Net - 文件日志 和 SqlServer日志
使用Log4Net - 文件日志 和 Oracle日志
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="log\\"/>
- <appendToFile value="true"/>
- <rollingStyle value="Date"/>
- <datePattern value="yyyyMM\\yyyyMMdd'.txt'"/>
- <staticLogFileName value="false"/>
- <param name="MaxSizeRollBackups" value="100"/>
- <layout type="log4net.Layout.PatternLayout">
-
- <conversionPattern value="==== %date [%thread] %-5level ==== : %newline%message%newline%newline" />
- </layout>
- </appender>
-
-
- <appender name="AdoNetAppender_SqlServer" type="log4net.Appender.ADONetAppender">
-
-
- <bufferSize value="0" />
-
- <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-
- <connectionString value="server=.;database=Log4Net;uid=sa;password=123.com;"/>
-
- <commandText value="INSERT INTO Log4Net ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
-
- <parameter>
- <parameterName value="@log_date" />
- <dbType value="DateTime" />
- <layout type="log4net.Layout.RawTimeStampLayout" />
- </parameter>
-
- <parameter>
- <parameterName value="@thread" />
- <dbType value="String" />
- <size value="255" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%thread" />
- </layout>
- </parameter>
-
- <parameter>
- <parameterName value="@log_level" />
- <dbType value="String" />
- <size value="50" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%level" />
- </layout>
- </parameter>
-
- <parameter>
- <parameterName value="@logger" />
- <dbType value="String" />
- <size value="255" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%logger" />
- </layout>
- </parameter>
-
- <parameter>
- <parameterName value="@message" />
- <dbType value="String" />
- <size value="4000" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%message" />
- </layout>
- </parameter>
- <parameter>
- <parameterName value="@exception" />
- <dbType value="String" />
- <size value="2000" />
- <layout type="log4net.Layout.ExceptionLayout" />
- </parameter>
- </appender>
-
-
- <root>
- <level value="ALL" />
- <appender-ref ref="RollingLogFileAppender" />
- <appender-ref ref="AdoNetAppender_SqlServer" />
- </root>
-
- </log4net>
- </configuration>
Program.cs代码,如下:- using log4net;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
- [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Content/Config/Log4Net.config", Watch = true)]
- namespace Com.No1.Log4Net.SqlServer
- {
- class Program
- {
- protected static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
- static void Main(string[] args)
- {
- for (int i = 0; i < 101; i++)
- {
- logger.Debug("Test" + i);
- }
- }
- }
- }
数据库创建表脚本:
- CREATE TABLE [dbo].[Log4Net](
- [Id] [bigint] IDENTITY(1,1) NOT NULL,
- [Date] [datetime2](7) NULL,
- [Thread] [varchar](255) NULL,
- [Level] [varchar](255) NULL,
- [Logger] [varchar](255) NULL,
- [Message] [varchar](255) NULL,
- [Exception] [varchar](255) NULL,
- CONSTRAINT [PK_Log4Net] PRIMARY KEY CLUSTERED
- (
- [Id] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
-
- GO
结果,如下图:
测试时注意修改节点 : connectionString 修改为 自己测试环境的连接字符串
注意点:
<!--bufferSize 为缓冲区大小,只有日志记录超设定值才会一块写入到数据库 -->
<!-- 注意bufferSize 参数在测试环境建议设置为 0 ,在生产环境建议设置为100 -->
<bufferSize value="0" />
如果测试环境设置成 100 ,则缓冲区 超过100条 消息才会 写入SqlServer库,这个很容易忘记,造成不必要的问题。测试环境 请设置成 0
测试代码,点击下载!
使用Log4Net - 文件日志
使用Log4Net - 文件日志 和 SqlServer日志
使用Log4Net - 文件日志 和 Oracle日志
0 0