说明

  1. Prism中如果把日志级别设定为DEBUG,会显示框架加载信息
  2. Prism默认是没有日志系统的

步骤

  1. 下载log4net包
Install-Package log4net;
  1. 在app.config中配置日志系统需要的信息
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--使用log\\代表存储在log文件夹下-->
<file value="log\\" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<!--这里必须添加'.txt'代表创建日志后缀-->
<datePattern value="yyyyMMdd'.txt'"/>
<staticLogFileName value="false" />
<maximumFileSize value="10MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="日期:%date%n线程ID:[%thread]%n日志等级:%-5level%n内容:%message%newline%newline" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
</startup>
</configuration>
  1. 在AssemblyInfo.cs中设定使用app.config的配置信息
[assembly: log4net.Config.XmlConfigurator(Watch = false)]
  1. 在项目中使用log4net,
using Prism.Logging;
using log4net; namespace AutoSeller
{
public class LogggerAdapter : ILoggerFacade
{
private static readonly ILog _log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public void Log(string message, Category category, Priority priority)
{
switch (category)
{
case Category.Debug:
_log.DebugFormat(message, category.ToString(), (int)priority);
break;
case Category.Exception:
_log.ErrorFormat(message, category.ToString(), (int)priority);
break;
case Category.Info:
_log.InfoFormat(message, category.ToString(), (int)priority);
break;
case Category.Warn:
_log.WarnFormat(message, category.ToString(), (int)priority);
break;
default:
break;
}
}
}
}
  1. 在bootstrapper中重写CreateLogger方法,创建日志系统。
using Prism.Logging;
namespace AutoSeller
{
public partial class SecondaryCacheBootstrapper
{ private readonly LoggerAdapter _logger = new LoggerAdapter(); protected override ILoggerFacade CreateLogger()
{
return _logger;
}
}
}

log4net说明

log4net支持记录5中类型日志消息:

  • FATAL
  • ERROR
  • WARN
  • INFO
  • DEBUG

对应在程序中使用同名函数记录日志,如记录INFO类型日志使用 log .Info(msg)。我们可能不需要显示所有类型日志,在开发我们需要显示调试日志信息,错误日志信息,而在实际部署中只需显示错误日志消息即可。可以通过设定日志等级实现上述需求,log4net支持7个等级的日志:

  • OFF -没有消息
  • FATAL
  • ERROR
  • WARN
  • INFO
  • DEBUG
  • ALL -所有消息

当我们在配置文件中配置日志等级为DEBUG时,

<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>

所有FATAL,ERROR,WARN,INFO,DEBUG类型消息都会被记录。

2.1 自定义日志系统-log4net的更多相关文章

  1. 磨刀不误砍柴工——统一日志系统 Log4Net/ExceptionLess

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫必须注明原文地址:www.cnblogs.com/tdws . 一.   写在前面 本文Log4Net介绍了基础的方式,大数据量生产环境不能使用,中等 ...

  2. 统一日志系统 Log4Net/ExceptionLess

    一.   写在前面 本文Log4Net介绍了基础的方式,大数据量生产环境不能使用,中等日志量请日志单库. 希望爱技术的你不要错过exceptionless和ELK 第四节开始简单配置大牛们推荐的了Ex ...

  3. C# 日志系统 log4net 配置及使用

    1.引用Dll 版本是:1.2.10.0,下载Dll 2.Web.config文件配置 <?xml version="1.0" encoding="utf-8&qu ...

  4. Django中配置自定义日志系统

  5. ELK+FileBeat+Log4Net搭建日志系统

    ELK+FileBeat+Log4Net搭建日志系统 来源:https://www.zybuluo.com/muyanfeixiang/note/608470 标签(空格分隔): ELK Log4Ne ...

  6. .NET下日志系统的搭建——log4net+kafka+elk

    .NET下日志系统的搭建--log4net+kafka+elk 前言     我们公司的程序日志之前都是采用log4net记录文件日志的方式(有关log4net的简单使用可以看我另一篇博客),但是随着 ...

  7. 【5】基于Log4Net的日志系统

    阅读目录 日志系统应具备的特性  Log4Net 配置文件:log4net.config 初始化 输出信息 对Log4Net的封装 log4net.config复杂配置   不管是Web应用程序还是W ...

  8. 搭建一套自己实用的.net架构(2)【日志模块-log4net】

    先谈谈简单的模块,日志.在系统中日志模块是必须的,什么系统日志,操作日志,调试日志.这里用的是log4net. 对log4net还不熟悉的小伙伴们赶快去搜索基础教程哦, 我这里就不温故了. 那么有人要 ...

  9. WCF 项目应用连载[2] - 创建Lig日志系统

    WCF 项目应用连载[1] - 索引 - 轻量级的Log系统 - Lig Sample -序 现在我们创建一个Lig工程 - Litelog 2.1 创建Lig服务 _________________ ...

随机推荐

  1. Elasticsearch(3):别名

      ES中可以为索引添加别名,一个别名可以指向到多个索引中,同时在添加别名时可以设置筛选条件,指向一个索引的部分数据,实现在关系数据库汇总的视图功能,这就是ES中别名的强大之处.别名是一个非常实用的功 ...

  2. Python装饰器实现带参数和不带参数

    1 def log(text=None): 2 3 if isinstance(text, str): 4 def decorator(func): 5 @functools.wraps(func) ...

  3. 关于keytool和jarsigner工具签名的使用小结

    在我们日常Android应用开发中,我们都要对我们开发的apk做签名处理,或者加固,增强我们apk的安全性,防止被逆向反编译,在apk签名这块,我们一般采用JDK自动工具来签名,下面就对相关工具做个简 ...

  4. git的项目完整操作

    今天来说下项目中git 的使用,针对常规操作: 然后执行  git status  可以看到目前的状态: 再执行添加操作      git add . 添加所有文件 接着执行提交命令  git com ...

  5. 如何在yii2直接执行SQL

    执行SQL $connection=Yii::app()->db;   // 假设你已经建立了一个 "db" 连接 $sql = "SELECT * FROM tb ...

  6. Python初学习:简单的练习题

    Python初学习 一些见到那的练习题: 初级难度 设计一重量转换器,输入以g为单位的数字后,返回换算结果以Kg为单位的结果 中级难度 设计一个求直角三角形斜边长的函数,(以两个直角边为参数,求最长边 ...

  7. shell携带附件,Linux下的自解压文件诞生了

    初衷 windows下有自解压文件,直接双击就能释放文件,并且还能执行释放文件前后要执行的脚本.Linux下我也想要这样的功能,因为我希望直接拷贝一个shell脚本给别人,别人直接运行就能用,而不是一 ...

  8. NET::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)

    错误信息: NET::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK) 错误背景:微服务不通过统一的nginx端口访问,能够正常请求接口并获取对应的响应.但是通过ngi ...

  9. centos7安装kafka 转

    CentOS7安装和使用kafka         环境准备 安装kafka之前我们需要做一些环境的准备 1.centOS7系统环境 2.jdk环境 3.可用的zookeeper集群服务 安装jdk ...

  10. centos8平台编译安装nginx1.18.0

    一,nginx的官网: http://nginx.org/ 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest 对应的源码 ...