1.nuget 中安装log4net

2。添加一个配置文件“log4net2.config”,内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration> <configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections> <log4net debug="true"> <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<File value="logs\"/>
<AppendToFile value="true" />
<rollingStyle value="Composite" />
<MaxSizeRollBackups value="999" />
<MaximumFileSize value="9000KB" />
<StaticLogFileName value="false" />
<DatePattern value="''yyyy-MM-dd'.log'" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-5p %d %5rms [%t] %-8.22c{1} %-2.18M - %m%n" />
<param name="Footer" value=" " />
</layout>
</appender> <root>
<level value="All" />
<appender-ref ref="RollingFile"/>
</root> </log4net> </configuration>
MaximumFileSize value="9000KB",日志文件大小超过9000KB就产生一个新文件。避免单个文件过大,打开困难。
MaxSizeRollBackups value="999",日志文件名序号从1到999。这2项根据实际情况调整。

3,代码中初始化配置

string logCfg = Path.Combine(Application.StartupPath, "log4net2.config");
XmlConfigurator.Configure(new FileInfo(logCfg));

4,写入日志

log4net.ILog log = log4net.LogManager.GetLogger("testApp.Logging");//获取一个日志记录器

                log.Info(DateTime.Now.ToString() + ": login success");//写入一条新log

一般会对ILog的实例封装成公共类。

Log4NetUtil:

using log4net.Config;
using System.IO;
using System.Windows.Forms; namespace CommonUtils
{
public static class Log4NetUtil
{
public static log4net.ILog _log; /// <summary>
/// 利用静态构造函数,只实例化一次。
/// </summary>
static Log4NetUtil()
{
//Application.StartupPath 是WINFORM的,可以根据需要,更换为其它
string appPath = Application.StartupPath;
// config,注意位置和名称。
string logCfg = Path.Combine(appPath, "log4net2.config");
XmlConfigurator.Configure(new FileInfo(logCfg)); //在 Configure 后,再实例化。 log 名随意
_log = log4net.LogManager.GetLogger("OH");//获取一个日志记录器
} public static void Info(string msg)
{
_log.Info(msg);//写入一条新log
} }
}

使用:

Log4NetUtil.Info("本机时间大于服务器时间");

。。

C#.NET 简单使用log4net的更多相关文章

  1. Lucene.net站内搜索—4、搜索引擎第一版技术储备(简单介绍Log4Net、生产者消费者模式)

    目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...

  2. C#反射实现 C# 反射 判断类的延伸类型 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码 C# ADO.NET的SqlDataReader对象,判断是否包含指定字段 页面中添加锚点的几种方式 .net 简单实用Log4net(多个日志配置文件) C# 常用小点

    C#反射实现   一.反射概念: 1.概念: 反射,通俗的讲就是我们在只知道一个对象的内部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现. 在.NET中,反射是重要的机制, ...

  3. 在C#代码中应用Log4Net(一)简单使用Log4Net

    首先让我们先把Log4Net跑起来,示例代码在文章最后面可以下载 1.先把Log4Net引入到工程中,为了演示方便,我们先建立一个winform程序.在程序的根目录下面,建立一个Libs文件夹,以便存 ...

  4. .net 简单实用Log4net(多个日志配置文件)

    前言: 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题.所以这个时候就 ...

  5. 在C#代码中应用Log4Net系列教程(附源代码)

    Log4Net应该可以说是DotNet中最流行的开源日志组件了.以前需要苦逼写的日志类,在Log4Net中简单地配置一下就搞定了.没用过Log4Net,真心不知道原来日志组件也可以做得这么灵活,当然这 ...

  6. Lucene.net站内搜索—3、最简单搜索引擎代码

    目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...

  7. Log4Net五步走

    本文不是教你全面了解log4net,本文只是希望教会你按步就班,照糊芦画瓢般就会用log4net1,引入log4net.dll组件2,建立一个配置文件两种方法,一种是在Web.Config或App.C ...

  8. 在C#代码中应用Log4Net系列教程

    在C#代码中应用Log4Net系列教程(附源代码)   Log4Net应该可以说是DotNet中最流行的开源日志组件了.以前需要苦逼写的日志类,在Log4Net中简单地配置一下就搞定了.没用过Log4 ...

  9. Log4Net(一):快速入门

    概览 Log4Net是Apache Log4J框架在.NET平台上的实现,它是一个帮助开发者将日志信息以多种方式(数据库.控制台.文件等)输出的开源工具. 为什么要使用日志记录 提供应用程序运行时状态 ...

  10. 日志学习系列(一)——Log4net的基础知识学习

    今天把Log4net日志记录做了封装,作为一个公共的类库.记录一下应该注意的地方.先了解一下log4net的理论知识. 参考百度百科 一.log4net是什么? log4net库是Apache log ...

随机推荐

  1. 力扣209(java&python)-长度最小的子数组(中等)

    题目: 给定一个含有 n 个正整数的数组和一个正整数 target . 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, ...

  2. Flink 助力美团数仓增量生产

    简介: 本文由美团研究员.实时计算负责人鞠大升分享,主要介绍 Flink 助力美团数仓增量生产的应用实践.内容包括:1.数仓增量生产:2.流式数据集成:3.流式数据处理:4.流式 OLAP 应用:5. ...

  3. [GPT] php 报错 Unsupported operand types

    Unsupported operand types 这个错误通常发生在使用了不支持的操作数类型时.例如,当您尝试对两个不同类型的值执行算术运算时,就会出现这个错误. 例如,如果您尝试将字符串与数字相加 ...

  4. [FAQ] WebStorm/PHPStorm:设置 HTML/JavaScript/PHP 注释缩进行为,代码片段

    [注释行为] Preferences -> Code Style 选择语言后,找到 Wrapping and Braces, 取消 Comment at first column. 如果是HTM ...

  5. WPF 修复引用库报错 所使用的 PresentationFramework 6

    本文记录一个 WPF 构建的坑,这是 WPF 仓库的运维管理大意挖的坑.将会在大家使用低版本的 dotnet 6 如 6.0.1 版本时,引用其他人使用高 dotnet 6 版本,如 dotnet 6 ...

  6. 读书笔记 dotnet 的字符串在内存是如何存放

    本文是读伟民哥翻译的 .NET内存管理宝典 这本书的笔记,我认为读书的过程也需要实践,这样对一知半解的知识也有较为清晰的了解.在阅读到 string 在内存的布局时,我看到 RuntimeHelper ...

  7. Process-与操作系统中的进程进行交互

    1.Process介绍 在Java中,Process类是一个抽象类,它提供了与操作系统中的进程进行交互的方法.当你在Java程序中启动一个新的进程(例如,运行一个外部程序或脚本)时,JVM会创建一个P ...

  8. SpringBoot实现WebSocket发送接收消息 + Vue实现SocketJs接收发送消息

    SpringBoot实现WebSocket发送接收消息 + Vue实现SocketJs接收发送消息 参考: 1.https://www.mchweb.net/index.php/dev/887.htm ...

  9. Asp .Net Core 系列:国际化多语言配置

    目录 概述 术语 本地化器 IStringLocalizer 在服务类中使用本地化 IStringLocalizerFactory IHtmlLocalizer IViewLocalizer 资源文件 ...

  10. iceoryx源码阅读(八)——IPC通信机制

    目录 1 整体结构 2 序列化与反序列化 3 类Unix系统的实现 3.1 发送函数send 3.2 接收函数receive 4 Windows系统的实现 4.1 发送函数send 4.2 接收函数r ...