.net core配置log4net

.net core配置log4net

  • 第一步
  • 第二部
  • 第三步
  • 第四步
  • 最后一步实际应用
  • 扩展应用
    • 第一步 新建一个类库项目
    • 第二步 新建类LogUtil.cs
    • 第三步 添加如下代码
    • 第四步 在WebApi引用刚刚新建的类库项目
    • 最后一步 实际使用

第一步

首先用NuGet包管理器添加log4net程序集,这个不用多说了

第二部

右键项目,在根目录添加配置文件log4net.config

第三步

用如下代码替换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">
   		<!--日志路径-->
   		<param name= "File" value= "D:\Logs\Demo.WebApi\"/>
   		<!--是否是向文件中追加日志-->
   		<param name= "AppendToFile" value= "true"/>
   		<!--log保留天数-->
   		<param name= "MaxSizeRollBackups" value= "10"/>
   		<!--日志文件名是否是固定不变的-->
   		<param name= "StaticLogFileName" value= "false"/>
   		<!--日志文件名格式为:2008-08-31.log-->
   		<param name= "DatePattern" value= "yyyy-MM-dd".rolling.log""/>
   		<!--日志根据日期滚动-->
   		<param name= "RollingStyle" value= "Date"/>
   		<layout type="log4net.Layout.PatternLayout">
   			<param name="ConversionPattern" value="%date 线程ID:[%thread] 日志级别:%-5level 类:%logger property:[%property{NDC}] - 描述:%message%newline" />
   		</layout>
   	</appender>

   	<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
   		<!--定义文件存放位置-->
   		<file value="D:/Logs/WebApi/filelog.txt"/>
   		<appendToFile value="true"/>
   		<rollingStyle value="Date"/>
   		<datePattern value="yyyyMMdd-HH:mm:ss"/>
   		<layout type="log4net.Layout.PatternLayout">
   			<!--每条日志末尾的文字说明-->
   			<footer value="/r/n"/>
   			<!--输出格式-->
   			<!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
   			<conversionPattern value="%date 线程ID:[%thread] 日志级别:%-5level 类:%logger property:[%property{NDC}] - 描述:%message%newline"/>
   		</layout>
   	</appender>

   	<!--定义输出到windows事件中-->
   	<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
   		<layout type="log4net.Layout.PatternLayout">
   			<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
   		</layout>
   	</appender>
   	<!--定义输出到数据库中,access,数据库为C盘的log4net.mdb-->
   	<appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender">
   		<connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:log4net.mdb"/>
   		<commandText value="INSERT INTO LogDetails ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)"/>
   		<!--定义各个参数-->
   		<parameter>
   			<parameterName value="@logDate"/>
   			<dbType value="String"/>
   			<size value="240"/>
   			<layout type="log4net.Layout.PatternLayout">
   				<conversionPattern value="%date"/>
   			</layout>
   		</parameter>
   		<parameter>
   			<parameterName value="@thread"/>
   			<dbType value="String"/>
   			<size value="240"/>
   			<layout type="log4net.Layout.PatternLayout">
   				<conversionPattern value="%thread"/>
   			</layout>
   		</parameter>
   		<parameter>
   			<parameterName value="@logLevel"/>
   			<dbType value="String"/>
   			<size value="240"/>
   			<layout type="log4net.Layout.PatternLayout">
   				<conversionPattern value="%level"/>
   			</layout>
   		</parameter>
   		<parameter>
   			<parameterName value="@logger"/>
   			<dbType value="String"/>
   			<size value="240"/>
   			<layout type="log4net.Layout.PatternLayout">
   				<conversionPattern value="%logger"/>
   			</layout>
   		</parameter>
   		<parameter>
   			<parameterName value="@message"/>
   			<dbType value="String"/>
   			<size value="240"/>
   			<layout type="log4net.Layout.PatternLayout">
   				<conversionPattern value="%message"/>
   			</layout>
   		</parameter>
   	</appender>

   	<!-- 控制台前台显示日志 -->
   	<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
   		<mapping>
   			<level value="ERROR" />
   			<foreColor value="Red, HighIntensity" />
   		</mapping>
   		<mapping>
   			<level value="Info" />
   			<foreColor value="Green" />
   		</mapping>
   		<layout type="log4net.Layout.PatternLayout">
   			<conversionPattern value="%n%date{HH:mm:ss,fff} [%-5level] %m" />
   		</layout>

   		<filter type="log4net.Filter.LevelRangeFilter">
   			<param name="LevelMin" value="Info" />
   			<param name="LevelMax" value="Fatal" />
   		</filter>
   	</appender>

   	<!-- 定义输出到数据库中,MSSQL ,脚本 CREATE TABLE [dbo].[Log] (
   [Id] [int] IDENTITY (1, 1) NOT NULL,
   [Date] [datetime] NOT NULL,
   [Thread] [varchar] (255) NOT NULL,
   [Level] [varchar] (50) NOT NULL,
   [Logger] [varchar] (255) NOT NULL,
   [Message] [varchar] (4000) NOT NULL,
   [Exception] [varchar] (2000) NULL)
   -->
   	<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=192.168.16.5,49189;database=LOHAS_Guide_Main;user id =sa;password=Sql2012"/>
   		<commandText value="INSERT INTO Log ([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>
   		<!--() OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL () -->
   		<level value="INFO" />
   		<appender-ref ref="RollingLogFileAppender"/>
   	</root>
   </log4net>
</configuration> 

第四步

修改Startup.cs类,主要构建repository 参数

   	public static ILoggerRepository repository {
      get; set; }
       public Startup(IConfiguration configuration)
       {
     
           Configuration = configuration;
           //配置日志
           repository = LogManager.CreateRepository("NETCoreRepository");
           XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
       }

最后一步实际应用

//实例化
 protected static ILog log = LogManager.GetLogger(Startup.repository.Name,System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            
//具体使用
log.Debug("具体日志类容!");

扩展应用

以上都只能在WebApi当前项目使用,如需要该项目其他子项目使用,可以封装一个第三方类库

第一步 新建一个类库项目

第二步 新建类LogUtil.cs

第三步 添加如下代码

//实例化
public class LogUtil
{
     
        public static readonly ILog log = LogManager.GetLogger("NETCoreRepository", System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}

第四步 在WebApi引用刚刚新建的类库项目

** 这里特别说明,在WebApi的Startup.cs类加入的代码中的NETCoreRepository值,必须和新建的类库中的NETCoreRepository值一样

最后一步 实际使用

在需要使用的项目引用刚刚新建的类库,

LogUtil.log.Debug("日志内容"); 

你可能感兴趣的:(.net,core,log4net)