使用log4net大致分以下几步:
1.安装 log4net,通过 Nuget 下载(或者有log4net.dll的话,直接引用即可)

2.新建 log4net.config 配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration><configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/></configSections><log4net><root></root><appender name="InfoAppender" type="log4net.Appender.RollingFileAppender,log4net" ><param name="File" type="" value="Log/Error/" /><param name="AppendToFile" value="true" /><param name="RollingStyle" value="Date" /><param name="DatePattern" value="yyyyMMdd&quot;.ini&quot;" /><param name="StaticLogFileName" value="false" /><layout type="log4net.Layout.PatternLayout,log4net"><param name="ConversionPattern" value="[%d]%n%m%n" /></layout></appender><appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"><bufferSize value="0" /><connectionType value="System.Data.SQLite.SQLiteConnection,System.Data.SQLite" /><connectionString value="Data Source=DataBase\\Log4NetSQLite.db;Version=3;" /><commandText value="INSERT INTO Log (Date, Level, Logger, Message) VALUES (@Date, @Level, @Logger, @Message)" /><parameter><parameterName value="@Date" /><dbType value="DateTime" /><layout type="log4net.Layout.RawTimeStampLayout" /></parameter><parameter><parameterName value="@Level" /><dbType value="String" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%level" /></layout></parameter><parameter><parameterName value="@Logger" /><dbType value="String" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%logger" /></layout></parameter><parameter><parameterName value="@Message" /><dbType value="String" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%message" /></layout></parameter></appender><logger name="Error"><level value="ERROR" /><appender-ref ref="InfoAppender" /></logger><logger name="Info"><level value="INFO" /><appender-ref ref="AdoNetAppender" /></logger></log4net>
</configuration>

3.设置 log4net.config 属性 “复制到输出目录”,选择“始终复制”

4.在 AssemblyInfo.cs 中添加一行代码

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]

5.写一个通用类 LogHelper

 public class LogHelper{/// <summary>/// 普通日志/// </summary>/// <param name="message">日志内容</param>public static void Info(string message){ILog log = LogManager.GetLogger("Info");if (log.IsInfoEnabled){log.Info(message);}           }/// <summary>/// 错误日志带异常/// </summary>/// <param name="message">错误日志</param>public static void Error(string message, Exception ex){ILog log = LogManager.GetLogger("Error");if (log.IsErrorEnabled){log.Error(message, ex);}}/// <summary>/// 错误日志不带异常/// </summary>/// <param name="message">错误日志</param>public static void Error(string message){ILog log = LogManager.GetLogger("Error");if (log.IsErrorEnabled){log.Error(message);}}}

6.主程序如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{class Program{static void Main(string[] args){string msg = "Star";//LogHelper.Info(msg);//无法向数据库SQLite添加信息LogHelper.Error(msg, new Exception("这是一条异常错误信息"));Console.WriteLine(msg);Console.ReadLine();}}
}

代码整体结构如下:

源代码下载地址:https://download.csdn.net/download/sinat_40003796/77862460

可参考阅读文章:https://www.cnblogs.com/leicao/p/5327900.html

C#【必备技能篇】log4net的使用相关推荐

  1. C#【必备技能篇】使用批处理脚本(.bat文件)打开控制台应用程序

    背景: 有时,需要使用.bat文件来运行一个.exe程序(一般是控制台应用程序),可以点击bat文件运行C#写的控制台应用程序. 示例: [1]Test.exe程序 和 click.bat文件 放在一 ...

  2. C#【必备技能篇】VS2019 使用C/C++ 生成DLL 文件,并用 C/C++、C#调用DLL

    文章目录 前言 一.生成dll 新建项目-C++-动态链接库(DLL) 项目-右键-属性-C/C++-预编译头:不使用预编译头. 项目-右键-属性-C/C++-高级:编译为:C.(也可以不更改,默认就 ...

  3. C#【必备技能篇】两个程序(进程间)通信,传递消息给其它窗口

    文章目录 一.在两个进程之间建立一个共同区域 二.利用API函数去找到进程窗口的句柄,然后用API去控制这个窗口 三.方式选择 四.示例[使用Process类和API实现两个进程之间的数据传输] 程序 ...

  4. C#【必备技能篇】Hex文件转bin文件的代码实现

    文章目录 引言 一.需求 二.编写代码的思路 三.代码实现[C#] 测试用的hex文件 引言 在了解hex文件格式的基础上阅读本文更佳.可阅读下边文章: [HEX文件格式详解]https://star ...

  5. C#【必备技能篇】上位机程序开机自动启动

    方法一:(更改注册表的方式) 通过C#操作注册表来实现. 代码已经写好,直接复制过去,在主程序里调用一下即可. /// <summary> /// 修改程序在注册表中的键值 /// < ...

  6. C#【必备技能篇】不安全代码(unsafe)的使用

    文章目录 一.有指针时,需要使用 unsafe 修饰符时 二.使用指针检索数据值 三.传递指针作为方法的参数 四.使用指针访问数组元素 五.编译不安全代码 当一个代码块使用 unsafe 修饰符标记时 ...

  7. C#【必备技能篇】Marshal是什么?怎么用?

    文章目录 学习来源:MSDN官方文档 一.Marshal是什么? 1.英文释义: 2.在MSDN中的定义: 3.通俗理解: 二.Marshal怎么用?[主要以一些实例来了解] 1.Marshal下的方 ...

  8. C#【必备技能篇】Windows计时器分辨率:重大规则更改

    [特别说明:] 此文章对Windows计时器进行了细致的分析,有一定阅读价值.但其中也有很多错别字或不准确的描述. Windows调度程序的行为在Windows 10 2004(又名2020年4月版W ...

  9. 3306端口是什么协议_防黑必备技能之端口篇

    - 如何查看端口占用情况 我们分windows和linux两种不同的平台分别介绍. 一.windows平台 在windows平台下,查看端口占用情况,最常见的DOS命令就是NETSTAT命令. 打开运 ...

最新文章

  1. 强化学习(三) - Gym库介绍和使用,Markov决策程序实例,动态规划决策实例
  2. mysql udf 性能_适当的mysql udf
  3. word标题文字居中浅谈
  4. error: #5: cannot open source input file core_cm3.h: No such file or directory
  5. 47 求1+2+3+4+...+n
  6. Vue + Element UI——搜索框DEMO
  7. 春运前五日全国累计发送旅客3.49亿人次 同比增0.58%
  8. Python中的MySQL数据库编程
  9. jenkins插件调用job_【Jenkins插件_实践】1.Job Import Plugin迁移Jobs
  10. maven中net.sf.json报错的解决方法
  11. md5sum/opensll md5
  12. 帆软报表插件开发之fine-decision中的AccessProvider扩展
  13. 一文读懂全球CTRM市场的前世今生
  14. IE首页被劫持,桌面图标异常的个人综合清理方法
  15. 基本共射放大电路概念详解
  16. 工具——XML文件解析器
  17. Csharp 简单操作Word模板文件
  18. win7系统软件安装显示NSIS ERROR的解决方法
  19. MySQL面试题——in是否使用【索引】
  20. 【Python爬虫】按时爬取京东几类自营手机型号价格参数并存入数据库

热门文章

  1. 思科与华为设备中的OSFP配置命令以及部分实例(超详细~~!!)
  2. 彻底弄懂 Unicode 编码
  3. 论文阅读之 Anchor-Free Person Search
  4. 单词词义、词性、例句查询python代码
  5. 《IAR添加文件夹和头文件的方法》
  6. ibm量子计算机掷硬币,微观世界扔硬币 量子漫步从理论到现实(图)
  7. RISC和CISC的对比
  8. 学软件测试看什么书好?
  9. 2017-2018-11 20155307刘浩 20155338常胜杰 20155335俞昆 实验三 实时系统实验报告
  10. 一招教你如何高效批量导入与更新数据