当前位置: 首页 > java >正文

Log4Net Demo

1 将 log4net.dll 拷到 Debug 目录

2 项目/右击依赖项 / 添加项目引用 / 点击“浏览”按钮 / 选择dll / 确定

3 右击 log4net.config / 属性 / 复制到输出目录 选择 “如果较新则复制”

4 App.config 

   <configuration><configSections>    </configSections><log4net configSource="log4net.config" /></configuration>

5 AssemblyInfo.cs 增加如下代码
   

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

6 MainWindow.xaml.cs 增加如下代码

   using log4net;using log4net.Config;   

7 log 输出

  public static ILog logger = LogManager.GetLogger(typeof(MainWindow));string strLog = string.Format("log message test {0} , {1}", 123, "abc");logger.Debug("Debug  " + strLog);logger.Info("Info  " + strLog);logger.Error("Error  " + strLog);

8 WPF 工程控制台输出,右击项目属性 / 应用程序 / 输出类型 / 选择 “控制台应用程序”

<?xml version="1.0" encoding="utf-8" ?>
<configuration><!--https://www.cnblogs.com/linybo/p/14046171.htmlhttps://www.cnblogs.com/shanzhiming/p/12207896.htmlhttps://www.jianshu.com/p/0b0731f04a39--><configSections><!-- log4net的定义 --><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /></configSections><log4net><root><!--Level几种取值: OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL--><level value="ALL" /><!--文件形式记录日志--><appender-ref ref="LogFileAppender" /><appender-ref ref="InfoAppender" /><appender-ref ref="ErrorAppender" /><!--控制台控制显示日志--><appender-ref ref="ConsoleAppender" /></root><logger name="loginfo"><level value="INFO" /><appender-ref ref="InfoAppender" /><additivity value="true"/></logger><logger name="logerror"><level value="ERROR" /><appender-ref ref="ErrorAppender" /></logger><!-- 将日志输出到控制台 --><appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /></layout></appender><appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"><!--保存路径 项目启动时自动创建log、logError文件--><file value="Log/debug/" /><encoding value="utf-8" /><appendToFile value="true" /><!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--><rollingStyle value="Date" /><!--这是按日期产生文件夹--><datePattern value="yyyyMMdd'_debug.log'" /><!--每个文件的大小。只在混合方式与文件大小方式下使用。超出大小后在所有文件名后自动增加正整数重新命名,数字最大的最早写入。可用的单位:KB|MB|GB。不要使用小数,否则会一直写入当前日志--><param name="MaxFileSize" value="1048576" /><!--保留的log文件数量 超过此数量后 自动删除之前的, 只有在 按Size分割时有效 设定值value="-1"为不限文件数--><param name="MaxSizeRollBackups" value="100" /><param name="RollingStyle" value="Composite" /><!--根据文件的大小和日期滚动文件--><!--是否只写到一个文件中--><param name="StaticLogFileName" value="false" /><!-- layout 控制Appender的输出格式,也可以是xml  一个Appender只能是一个layout--><!-- <param name="ConversionPattern"  value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger   操作者ID:%property{Operator} 操作类型:%property{Action}%n  当前机器名:%property%n当前机器名及登录用户:%username %n  记录位置:%location%n 消息描述:%property{Message}%n   异常:%exception%n 消息:%message%newline%n%n" />%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息%n(new line):换行%d(datetime):输出当前语句运行的时刻%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数%t(thread id):当前语句所在的线程ID%p(priority):等同于:%level 日志的当前优先级别,即DEBUG、INFO、WARN…等%c(class):当前日志对象的名称%f(file):输出语句所在的文件名。%l(line):输出语句所在的行号。%数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。(因为日志的几个等级的单词长度不一样,通过设置字符长度,可以示日志更加整齐)--><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] %l: %message%newline" /></layout><!--layout type="log4net.Layout.PatternLayout"><conversionPattern value="%newline %nDatetime:%utcdate %nHostName:%property{log4net:HostName} %nThreadID:[%thread] %nLogLevel:  %-5level %nClassName:%logger property: [%property{NDC}] - %nDescription:%message%newline %n" /></layout--></appender><appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"><param name="File" value="Log/info/" /><param name="AppendToFile" value="true" /><param name="RollingStyle" value="Date" /><param name="DatePattern" value="yyyyMMdd'_info.txt'" /><param name="MaxFileSize" value="1048576" /><param name="MaxSizeRollBackups" value="100" /><param name="StaticLogFileName" value="false" /><!-- 等级过滤 --><filter type="log4net.Filter.LevelRangeFilter"><levelMin value="INFO"/><levelMax value="INFO"/><!-- <param name="LevelToMatch" value="INFO" />--></filter><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%date [%thread] %-5level %message%newline" /></layout></appender><appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"><param name="File" value="log/error/" /><param name="AppendToFile" value="true" /><param name="RollingStyle" value="Date" /><param name="DatePattern" value="yyyyMMdd'_error.txt'" /><param name="MaxFileSize" value="1048576" /><param name="MaxSizeRollBackups" value="100" /><param name="StaticLogFileName" value="false" /><!-- 等级过滤 --><filter type="log4net.Filter.LevelRangeFilter"><levelMin value="ERROR"/><levelMax value="OFF"/><!-- <param name="LevelToMatch" value="INFO" />--></filter><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%date [%thread] %-5level %logger %l: %message%newline" /></layout><!--< > = <> %n = 回车--></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><appender name="SmtpAppender" type="log4net.Appender.SmtpAppender"><to value="bobby.chopra@prcm.com"/><from value="TagFileUploader@prcm.com"/><subject value="TagFileUploader ERROR"/><smtpHost value="prc-mn-ex01"/><bufferSize value="512"/><lossy value="true"/><evaluator type="log4net.Core.LevelEvaluator"><threshold value="ERROR"/></evaluator><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/></layout></appender></log4net>
</configuration>

http://www.xdnf.cn/news/13190.html

相关文章:

  • 高防CDN可以防御什么类型的攻击?—— 解析高防CDN的防御能力与应用场景
  • 第十章 基本定时器
  • Gartner企业技术参考架构学习心得
  • Flutter 多版本管理工具 Puro ,它和 FVM 有什么区别?
  • 最新SpringBoot+SpringCloud+Nacos微服务框架分享
  • 【P2P使用指南】
  • Neo4j 图数据库安装教程(2024最新版)—— Windows / Linux / macOS 全平台指南
  • DAY47打卡
  • 云计算——弹性云计算器(ECS)
  • 如何在看板中有效管理突发紧急任务
  • .Net框架,除了EF还有很多很多......
  • 简易版抽奖活动的设计技术方案
  • HTML的初步学习
  • VSCode主题设计
  • React Native 导航系统实战(React Navigation)
  • 基于FPGA的PID算法学习———实现PID比例控制算法
  • 深度学习小项目合集2-视频介绍下自取
  • 飞牛os配置证书自动续期
  • postgresql|数据库|只读用户的创建和删除(备忘)
  • 多面体优化,调度变换
  • 【JavaEE】-- HTTP
  • 交叉编译,对于初学者来说是个极难跨过去的砍
  • matlab画图时如何屏蔽title等函数中缺省的latex解释
  • 使用Mvnd加速Maven构建速度
  • 自己学习原理
  • 【Linux】SSH:简单端口转发的跳板机
  • 小白进阶shell学习-----脚本实战案例
  • 论文解析:一文弄懂ResNet(图像识别分类、目标检测)
  • 华为云Flexus+DeepSeek征文 | 大模型+高性能云服务的化学反应:医疗场景Agent开发
  • 【数组和二分查找】