【记录】.net 通用log4net日志配置
asp.net mvc
1、引入log4netNuGet包。
2、修改Global.asax下的Application_Start方法。加入log4net.Config.XmlConfigurator.Configure(),修改如下:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles); log4net.Config.XmlConfigurator.Configure();
}
3、修改web.config文件,增加以下节点配置:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<log4net configSource="Config\log4net.config" />
4、在项目中新建Config文件夹,用于存放配置文件。
5、在文件夹下新建文件log4net.config,内容如下:
<?xml version="1.0"?>
<log4net>
<root>
<level value="DEBUG"/>
<appender-ref ref="SysAppender"/>
<appender-ref ref="consoleApp"/>
</root>
<!--信息日志配置-->
<appender name="SysAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Logs\\" />
<param name="AppendToFile" value="true" />
<param name="MaximumFileSize" value="20MB" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="\\yyyyMM\\yyyyMMdd".log"" />
<param name="RollingStyle" value="Composite" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%n -------------------------------------------------------------------------------------- %n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%x] %n%m %n" />
<param name="Header" value=" ====================================================================================== " />
</layout>
</appender>
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<logger name="WebLogger">
<level value="DEBUG"/>
</logger> </log4net>
调用示例:
private log4net.ILog log = log4net.LogManager.GetLogger("TestJob");
public void Execute(IJobExecutionContext context)
{
var logContent = string.Format("{0}==>>{1}{2}", DateTime.Now, "create new log.", Environment.NewLine);
log.Info(logContent);
}
.net core
新建Log4netHelper类,内容如下:
using log4net;
using log4net.Repository;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Text; namespace Five.ScheduleQuartz.Utils.Tool
{
/// <summary>
/// 日志等级
/// </summary>
public enum LogLevel
{
Error,
Debug,
Warning,
Info
}
/// <summary>
/// 单例模式初始化
/// </summary>
public class Singleton
{
private ILog Log;
private static Singleton instance;
private Singleton() { }
public static Singleton getInstance()
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
/// <summary>
/// 获取日志初始化器
/// </summary>
/// <param name="type">类名 方法名</param>
/// <returns></returns>
public ILog Init(string type)
{
Log = LogManager.GetLogger(Log4netHelper.Repository.Name, type);
return Log;
}
}
/// <summary>
/// 日志操作类
/// </summary>
public class Log4netHelper
{
/// <summary>
/// log4net 仓储
/// </summary>
public static ILoggerRepository Repository { get; set; }
/// <summary>
/// 输出Erro日志
/// </summary>
/// <param name="message">日志内容</param>
public static void Error(string message)
{
StackTrace trace = new StackTrace();
//获取是哪个类来调用的
var className = trace.GetFrame().GetMethod().DeclaringType;
//获取方法名称
MethodBase method = trace.GetFrame().GetMethod();
var type = "类名:" + className.Namespace + "\r\n\r\t\r\r方法名:" + method.Name;
WriteLog(LogLevel.Error, message, type);
}
/// <summary>
/// 输出Warning日志
/// </summary>
/// <param name="message">日志内容</param>
public static void Warning(string message)
{
StackTrace trace = new StackTrace();
//获取是哪个类来调用的
var className = trace.GetFrame().GetMethod().DeclaringType;
//获取方法名称
MethodBase method = trace.GetFrame().GetMethod();
var type = "类名:" + className.Namespace + "\r\n\r\t\r\r方法名:" + method.Name;
//记录日志
WriteLog(LogLevel.Warning, message, type);
}
/// <summary>
/// 输出Info日志
/// </summary>
/// <param name="message">日志内容</param>
public static void Info(string message)
{
StackTrace trace = new StackTrace();
//获取是哪个类来调用的
var className = trace.GetFrame().GetMethod().DeclaringType;
//获取方法名称
MethodBase method = trace.GetFrame().GetMethod();
var type = "类名:" + className.Namespace + "\r\n\r\t\r\r方法名:" + method.Name;
//记录日志
WriteLog(LogLevel.Info, message, type);
}
/// <summary>
/// 输出Debug日志
/// </summary>
/// <param name="message">日志内容</param>
public static void Debug(string message)
{
StackTrace trace = new StackTrace();
//获取是哪个类来调用的
var className = trace.GetFrame().GetMethod().DeclaringType;
//获取方法名称
MethodBase method = trace.GetFrame().GetMethod();
var type = "类名:" + className.Namespace + "\r\n\r\t\r\r方法名:" + method.Name;
//记录日志
WriteLog(LogLevel.Debug, message, type);
}
/// <summary>
/// 写日志
/// </summary>
/// <param name="logLevel">日志等级</param>
/// <param name="message">日志信息</param>
/// <param name="type">类名 方法名</param>
private static void WriteLog(LogLevel logLevel, string message, string type)
{
ILog Log = Singleton.getInstance().Init(type);
switch (logLevel)
{
case LogLevel.Debug:
Log.Debug(message);
break;
case LogLevel.Error:
Log.Error(message);
break;
case LogLevel.Info:
Log.Info(message);
break;
case LogLevel.Warning:
Log.Warn(message);
break;
} }
}
}
修改Startup如下:
public Startup(IConfiguration configuration)
{
Configuration = configuration;
//日志配置文件
Log4netHelper.Repository = LogManager.CreateRepository("NETCoreRepository");
XmlConfigurator.Configure(Log4netHelper.Repository, new FileInfo("./Config/log4net.config"));
}
log4net.config配置文件内容参考上面的内容。
使用示例:
Log4netHelper.Info("测试日志内容");
【记录】.net 通用log4net日志配置的更多相关文章
- LOG4NET日志配置及使用
Log4net的安装 Install-Package log4net 1.先弄个日志记录的类 /// <summary> /// 使用LOG4NET记录日志的功能,在WEB.CONFIG里 ...
- Log4Net 日志配置[附带源码]
前述 园子里有许多人对log4net这款开源的日志记录控件有很多介绍.在这里个人再做一次总结,希望对以后有所帮助,需要的时候可以直接使用,减少查阅资料的时间.利用log4net可以方便地将日志信息记录 ...
- log4net 日志配置及使用
一.log4net按照不同的[LEVEL]级别输出到不同文件 <log4net> <!--错误日志:::记录错误日志--> <!--按日期分割日志文件 一天一个--> ...
- Log4Net日志配置
1.添加Log4net.dll引用 将release版Log4net.dll拷贝到Lib文件夹,然后添加引用.
- log4net日志的配置及简单应用
在程序运行中,往往会出现各种出乎开发人员意料的异常或者错误,所以,记录详细的程序运行日志信息,有利于开发人员和运维人员排查异常信息,提高工作效率.而本菜鸟在大神推荐和指导下使用log4net这一插件工 ...
- 如何在通用权限管理系统中集成log4net日志功能
开发人员都知道,在系统运行中要记录各种日志,自己写一个日志功能,无论是在效率还是功能扩展上来说都不是很好,目前大多用的是第三方的日志系统,其中一个非常有名,用的最多的就是log4net.下面是关于这个 ...
- 关于log4net日志的配置流程
最近又重新整理一下log4net日志的配置,现在记录一下流程和一些遇到的问题,以备后续使用,具体的配置参数等信息.此文无,见谅! 1. 下载log4net.dll文件(网上很多,随便找一个!) 2. ...
- Log4Net日志记录两种方式
简介 log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具. log4net是Ap ...
- 日志管理-将Log4net的配置配置到的独立文件中
转自:http://www.cnblogs.com/zfanlong1314/p/3662679.html使用log4net已经很久了.但从来没有详情了解log4的参数,及具体使用方法.看了周公的博客 ...
随机推荐
- PostgreSql问题:ERROR: operator does not exist: timestamp without time zone > character varying
问题描述: ERROR: operator does not exist: timestamp without time zone > character varying 解决方法: //注意 ...
- HttpServletRequest cannot be resolved to a type。
问题描述:HttpServletRequest cannot be resolved to a type.Multiple markers at this line - The import java ...
- 为什么我不愿意用ECharts
前言 ECharts是百度一个使用 JavaScript 实现的开源可视化库,提供了创建多种多样的图标方式,包括坐标系,图例,提示,工具箱等基础组件,并在此上构建出折线图.柱状图.散点图.K线图.饼图 ...
- python 程序退出方式
sys.exit() 执行该语句会直接退出程序,这也是经常使用的方法,也不需要考虑平台等因素的影响,一般是退出Python程序的首选方法. 该方法中包含一个参数status,默认为0,表示正常退出,也 ...
- python 之pulp 线性规划介绍及举例
pulp http://pythonhosted.org/PuLP/main/basic_python_coding.html 供水问题 1问题 供水公司有三个水库分别为A,B,C向四个小区甲乙丙丁供 ...
- Windows 产品激活状态、密钥等信息查看
目前,大多PC都是预装了微软家的桌面级系统 Windows ,这也算是微软一大得意之作.可是 Windows 产品可不是免费的,是要 $ 的.可能在中国,大多数系统可能是盗版过来的,像当年的雨林木风( ...
- CU社区shell板块awk十三问整理
CU社区shell板块awk十三问整理 一.RS="" 当 RS="" 时,会将\n强制加入到FS变量中,因为RS为空时,是将连续多空行作为分隔符,近似于\n\ ...
- python脚本获取主机Mac地址
#!/usr/bin/python import re import subprocess ARP = "arp" IP = "192.168.128.27" ...
- pip相关工具使用小结
最近写taffy的时候用到了两个pip相关的小工具. 一个是pip-review批量更新lib库,一个是pipreqs生成基于项目的requirements.txt. 1. pip相关命令 #更新单个 ...
- 07_Python变量内存地址、小数据池
一.变量在内存中的地址 变量:用来标识(identify)一块内存区域.为了方便表示内存,我们操作变量实质上是在操作变量指向的那块内存单元.编译器负责分配.我们可以使用Python内建函数id()来获 ...