Install-Package log4net -Version 2.0.12
- 数据库建表
CREATE TABLE [dbo].[WebLog_Msg](
[LogID] [int] IDENTITY(1,1) NOT NULL,
[Date] [datetime] NOT NULL,
[Thread] [nvarchar](255) NULL,
[Level] [nvarchar](50) NULL,
[Logger] [nvarchar](255) NULL,
[Message] [nvarchar](2000) NULL,
[Exception] [nvarchar](4000) NULL,
CONSTRAINT [PK_WebLog_Msg] PRIMARY KEY CLUSTERED
(
[LogID] ASC
))
- D:vs2017projlog4netdemoPropertiesAssemblyInfo.cs 添加内容
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
- D:vs2017projlog4netdemoLoggHelper.cs 内容
using System;
namespace LogHelper
{
public class LoggHelper
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(LoggHelper));
public static void LogInfo(Exception ex)
{
log.Info(ex);
}
public static void LogWarn(Exception ex)
{
log.Warn(ex);
}
public static void LogFatal(Exception ex)
{
log.Fatal(ex);
}
public static void LogError(Exception ex)
{
log.Error(ex);
}
}
}
- 配置文件
log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!--Log4Net config section-->
<configSections>
<!--<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<!--<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
<arg key="configType" value="INLINE"/>
</factoryAdapter>
</logging>
</common>-->
<log4net>
<root>
<!--OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL-->
<level value="ALL"/>
<appender-ref ref="AdoNetAppender_SqlServer"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
<!--<logger name="ErrorInfo">
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</logger>-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="logerrorInfo.txt"/>
<param name="AppendToFile" value="true"/>
<param name="MaxSizeRollBackups" value="10"/>
<param name="MaximumFileSize" value="2MB"/>
<param name="RollingStyle" value="Size"/>
<param name="StaticLogFileName" value="true"/>
<layout type="log4net.Layout.PatternLayout">
<!--"%d %t %p %l %m %n":
1、%d输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss},输出类似:2005-7-19 17:49:27,刚好适合插入SQLServer;
2、%t 产生该日志事件的线程名;
3、%p 日志的log_level,如DEBUG、WARN或者INFO;
4、%c 输出所属的类目,通常就是所在类的全名,如"iNotes.Default";
5、%m 日志的内容;
6、%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。如write2database.main(write2database.java:33);
7、%n 输出一个回车换行符,Windows平台为" ",Unix平台为" "
-->
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
</layout>
</appender>
<appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="Warn" />
<levelMax value="Fatal" />
</filter>
<bufferSize value="0" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="server=DEVEXPRESSHaoSQL;database=log4net;user id=sa;password=****"/>
<commandText value="INSERT INTO WebLog_Msg([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="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
</log4net>
<!--Log4Net config section end-->
</configuration>
- 测试
static void Main(string[] args)
{
try
{
throw new Exception("LogInfo");
}
catch (Exception ex)
{
LoggHelper.LogInfo(ex);
}
try
{
throw new Exception("LogWarn");
}
catch (Exception ex)
{
LoggHelper.LogWarn(ex);
}
try
{
throw new Exception("LogError");
}
catch (Exception ex)
{
LoggHelper.LogError(ex);
}
try
{
throw new Exception("LogFatal");
}
catch (Exception ex)
{
LoggHelper.LogFatal(ex);
}
Console.ReadLine();
}
截图