C#中使用log4net框架做日志输出
一、用法
1、引入包:https://www.nuget.org/packages/log4net/
2、Main函数
using System;
using System.IO;
using log4net;
using log4net.Config; namespace Log4NetDemo
{
class Program
{
static void Main(string[] args)
{
var repository = LogManager.CreateRepository("NETCoreRepository");
XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
var log = LogManager.GetLogger("NETCoreRepository", typeof(Program)); log.Info("this is a info.");
log.Error("this is an error:", new Exception("this is error."));
log.Fatal("this is a fatal.");
log.Warn("this is a warn");
Console.WriteLine("finish.");
}
}
}
如果不想创建Repository的话,也可以写个工具类,统一在名称空间上备注完成。
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = false)]
namespace MyProj.Utils.Log
{
public class LogUtils
{
private ILog log = LogManager.GetLogger(typeof(LogUtils)); public void Debug(object message) => log.Debug(message);
public void Debug(object message, Exception exception) => log.Debug(message, exception);
public void DebugFormat(string format, params object[] args) => log.DebugFormat(format, args);
public void DebugFormat(string format, object arg0) => log.DebugFormat(format, arg0);
public void DebugFormat(string format, object arg0, object arg1, object arg2) => log.DebugFormat(format, arg0, arg1, arg2);
public void DebugFormat(string format, object arg0, object arg1) => log.DebugFormat(format, arg0, arg1);
public void Error(object message) => log.Error(message);
public void Error(object message, Exception exception) => log.Error(message, exception);
public void ErrorFormat(string format, object arg0, object arg1, object arg2) => log.ErrorFormat(format, arg0, arg1, arg2);
public void ErrorFormat(string format, object arg0, object arg1) => log.ErrorFormat(format, arg0, arg1);
public void ErrorFormat(string format, object arg0) => log.ErrorFormat(format, arg0);
public void ErrorFormat(string format, params object[] args) => log.ErrorFormat(format, args);
public void Fatal(object message) => log.Fatal(message);
public void Fatal(object message, Exception exception) => log.Fatal(message, exception);
public void FatalFormat(string format, object arg0, object arg1, object arg2) => log.FatalFormat(format, arg0, arg1, arg2);
public void FatalFormat(string format, object arg0) => log.FatalFormat(format, arg0);
public void FatalFormat(string format, params object[] args) => log.FatalFormat(format, args);
public void FatalFormat(string format, object arg0, object arg1) => log.FatalFormat(format, arg0, arg1);
public void Info(object message, Exception exception) => log.Info(message, exception);
public void Info(object message) => log.Info(message);
public void InfoFormat(string format, object arg0, object arg1, object arg2) => log.InfoFormat(format, arg0, arg1, arg2);
public void InfoFormat(string format, object arg0, object arg1) => log.InfoFormat(format, arg0, arg1);
public void InfoFormat(string format, object arg0) => log.InfoFormat(format, arg0);
public void InfoFormat(string format, params object[] args) => log.InfoFormat(format, args);
public void Warn(object message) => log.Warn(message);
public void Warn(object message, Exception exception) => log.Warn(message, exception);
public void WarnFormat(string format, object arg0, object arg1) => log.WarnFormat(format, arg0, arg1);
public void WarnFormat(string format, object arg0) => log.WarnFormat(format, arg0);
public void WarnFormat(string format, params object[] args) => log.WarnFormat(format, args);
public void WarnFormat(string format, object arg0, object arg1, object arg2) => log.WarnFormat(format, arg0, arg1, arg2);
}
}
3、新建一个log4net.config配置文件,并设置输出到程序目录下。
<?xml version="1.0" encoding="UTF-8"?> <configuration status="ON">
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" />
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs/" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<staticLogFileName value="false" />
<datePattern value="yyyyMMdd'.log'" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<root level="ALL">
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
</configuration>
4、效果:
C#中使用log4net框架做日志输出的更多相关文章
- MVC 中使用log4net 打印重复日志解决方法
最近在项目中引用log4net 来打印日志,会发现在同一时间点 打印重复记录: 详见图
- Shell 从日志文件中选择时间段内的日志输出到另一个文件
Shell 从日志文件中选择时间段内的日志输出到另一个文件 情况是这样的,某系统的日志全部写在一个日志文件内,所以这个文件非常大,非常长,每次查阅的时候非常的不方便.所以,相关人员希望能够查询某个时间 ...
- asp.net Web项目中使用Log4Net进行错误日志记录
使用log4net可以很方便地为应用添加日志功能.应用Log4net,开发者可以很精确地控制日志信息的输出,减少了多余信息,提高了日志记录性能.同时,通过外部配置文件,用户可以不用重新编译程序就能 ...
- 在ASP.NET MVC中使用Log4Net记录异常日志,出错时导向到静态页
本篇体验在ASP.NET MVC 4中使用Log4Net记录日志. 通过NuGet安装Log4Net. 需求是:当出错时导向到Error.html静态页面,Log4Net记录错误信息. 大致的思路是: ...
- asp.net mvc中加入log4net记录错误日志
直接上代码示例:https://share.weiyun.com/aff36f2547514cfefe129ebb8ccb28ef 首先添加加log4net的dll,推荐用nuget.... 贴上配置 ...
- 如何在通用权限管理系统中集成log4net日志功能
开发人员都知道,在系统运行中要记录各种日志,自己写一个日志功能,无论是在效率还是功能扩展上来说都不是很好,目前大多用的是第三方的日志系统,其中一个非常有名,用的最多的就是log4net.下面是关于这个 ...
- C#中四步轻松使用log4net记录本地日志
在这里,记录我在项目中使用log4net记录本地日志的步骤.在不会之前感觉很难,很神秘,一旦会了之后其实没那么难.其实所有的事情都是一样的,下面我就分享一下我使用log4Net的经验. 第一步:首先从 ...
- C#中四步轻松使用log4net记录本地日志(WPF有点小区别)
在这里,记录我在项目中使用log4net记录本地日志的步骤.在不会之前感觉很难,很神秘,一旦会了之后其实没那么难.其实所有的事情都是一样的,下面我就分享一下我使用log4Net的经验. 第一步:首先从 ...
- ASP.NET MVC中Log4Net记录错误日志的使用
第一.在管理NuGet程序包 =>下载 Log4Net 第二.在web.config配置Log4Net 1:在<configuration>节点下 <configSection ...
随机推荐
- python 全栈开发,Day50(Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏)
一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...
- DFMZ-开发过程中遇到的错误-01
未能加载文件或程序集“H2F, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项.试图加载格式不正确的程序. 原因分析:由 ...
- this和引用变量的地址值是同一个---------new后面的是构造方法
/*全局变量和构造方法及this和引用变量的关系 引用变量在栈里面对象在堆中this你可以理解为在堆里面this就是这个对象自己 */ public class Person {/* * 定义属性 ...
- Ext.js入门:TabPanel组件(八)
一:TabPanel组件简介 二:简单代码示例 三:使用iframe作为tab的标签页内容 四:动态添加tabpanel的标签页 五:为tabpanel标签页添加右键菜单 方式一: <html ...
- 微服务的发现与注册--Eureka
目录 服务提供者.服务消费者.服务发现组件三者之间的关系 Eureka 简介 Eureka Server Eureka Client 编写Eureka Server 将微服务注册到Eureka Ser ...
- BZOJP1899ZJOI2004
老早的一道水题 题意: 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭.由于每个人的口味(以及胃口)不同,所以 ...
- springmvc中登录过滤器使用
前言 一般的javaWeb项目中我们肯定会使用过滤器来实现对一些请求的过滤,通过过滤来实现对一些请求参数的设置和校验,比如我们比较熟悉的CharacterEncodingFilter就是一个字符编 ...
- 修改idea自动生成在C盘的文件路径,以免电脑越用越卡
1.看图一步一步来 2.将原来该位置的文件剪切到你指定的路径下 3.启动idea ,选择以前的配置即可
- Linux学习之文件系统常用命令(七)
Linux文件系统常用命令 目录 df命令 du命令 fsck命令 dump2fs命令 df命令 df命令 统计文件系统的占有情况,分区用了多少空间,还剩多少空间 df [选项] [挂载点] 选项: ...
- js基础梳理-究竟什么是执行上下文栈(执行栈),执行上下文(可执行代码)?
日常在群里讨论一些概念性的问题,比如变量提升,作用域和闭包相关问题的时候,经常会听一些大佬们给别人解释的时候说执行上下文,调用上下文巴拉巴拉,总有点似懂非懂,不明觉厉的感觉.今天,就对这两个概念梳理一 ...