log4net 纯代码配置
当需要输出的日志很多的时候,每次修改config都很麻烦,于是想可不可以动态生成。
网上找的案例都是获取单个appender/logger的,此处例子是任意logger,appender相同
log4net的pattern里面关于线程的显示规则是,有线程名用名字,无线程名用线程号。Nlog 可以分别指定
例子如下
1 public static ILog GetLoggerByName(string name)
2 {
3 if (LogManager.Exists(name) == null)
4 {
5
6 // Pattern Layout defined
7 PatternLayout patternLayout = new PatternLayout();
8 patternLayout.ConversionPattern = "%date %thread %level %logger - %message%newline";
9 patternLayout.ActivateOptions();
10
11 // configurating the RollingFileAppender object
12 RollingFileAppender appender = new RollingFileAppender();
13 appender.Name = name;
14 appender.AppendToFile = true;
15 appender.File = $"Log\\{name}.log";
16 appender.StaticLogFileName = true;
17 appender.PreserveLogFileNameExtension = true;
18 appender.LockingModel = new FileAppender.MinimalLock();
19 appender.Layout = patternLayout;
20 appender.MaxSizeRollBackups = 512;
21 appender.MaximumFileSize = "150MB";
22 appender.RollingStyle = RollingFileAppender.RollingMode.Composite;
23 appender.ActivateOptions();
24
25 Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
26
27 var loger = hierarchy.GetLogger(name, hierarchy.LoggerFactory); //!!! 此处写法是重点,不容更改
28 loger.Hierarchy = hierarchy;
29 loger.AddAppender(appender);
30 loger.Level = Level.All;
31
32 BasicConfigurator.Configure();//!!! 此处写法是重点,不容更改
33
34 var appname = Assembly.GetEntryAssembly().GetName().Name;
35 var version= Assembly.GetEntryAssembly().GetName().Version;
36 loger.Log(Level.Info, $"Log name {name} created for Application: {appname} Version: {version}", null);
37 }
38 var log = LogManager.GetLogger(name);
39 return log;
40 }
1 public static void SetMinLogLevel(Level level,string name="")
2 {
3 if(string.IsNullOrEmpty(name))
4 {
5 Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
6 hierarchy.Threshold = level;
7 }
8 else
9 {
10 Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
11 if(hierarchy.Exists(name) is Logger loger)
12 {
13 loger.Level = level;
14 }
15 }
16 }
log4net 纯代码配置的更多相关文章
- log4net保存到数据库系列四、完整代码配置log4net
园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...
- 纯java配置SpringMVC
一般情况下,我们会在web.xml下配置好Spring和SpringMVC,并指定好它们的配置文件 是最常用的也是最方便的方法 例如: web.xml <!-- The definition o ...
- Spring MVC4 纯注解配置教程
阅读本文需要又一定的sping基础,最起码要成功的运行过一个SpringMvc项目. 在传统的Spring项目中,我们要写一堆的XML文件.而这些XML文件格式要求又很严格,很不便于开发.而网上所谓的 ...
- log4net的基本配置及用法
[1].[代码] [C#]代码 跳至 [1] [2] ? 1 2 using System.Reflection; //使用反射 static private ILog log = log4net. ...
- iOS高仿app源码:纯代码打造高仿优质《内涵段子》
iOS高仿app源码:纯代码打造高仿优质<内涵段子>收藏下来 字数1950 阅读4999 评论173 喜欢133 Github 地址 https://github.com/Charlesy ...
- log log4net用代码记录日志
log4net 用代码记录日志 今天在开发项目的时候,遇到跨域调用log4net中的类,出现了一个bug,提示LogImpl未标记可序列化,此时,我靠,麻烦了,这个类又不是咱们自己的,改源码我想应该 ...
- Android 纯代码加入点击效果
项目中非常多的Button, 同一时候配置非常多button切图,Selector是不是非常烦, 使用以下这个类,就能够直接为Button添加点击效果. 不用多个图片,不用Selector. 使用方法 ...
- iOS UICollectionView(转一) XIB+纯代码创建:cell,头脚视图 cell间距
之前用CollectionViewController只是皮毛,一些iOS从入门到精通的书上也是泛泛而谈.这几天好好的搞了搞苹果的开发文档上CollectionViewController的内容,亲身 ...
- 关于什么是SpringMVC,和SpringMVC基于xml配置、注解配置、纯注解配置
首先我们先要了解一下,什么是SpringMVC? SpringMVC是Spring框架内置的MVC的实现.SpringMVC就是一个Spring内置的MVC子框架,也就是说SpringMVC的相关包都 ...
随机推荐
- 「Netty实战 02」手把手教你实现自己的第一个 Netty 应用!新手也能搞懂!
大家好,我是 「后端技术进阶」 作者,一个热爱技术的少年. 很多小伙伴搞不清楚为啥要学习 Netty ,今天这篇文章开始之前,简单说一下自己的看法: @ 目录 服务端 创建服务端 自定义服务端 Cha ...
- Java面试题(RabbitMQ篇)
RabbitMQ 135. rabbitmq 的使用场景有哪些? ①. 跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列.就像我们除了打电话(同步)以外,还需要发短信,发电子邮件(异步)的通 ...
- Appium + Python App自动化第一个脚本
今天跟大家讲解一个Appium和Python App自动化的脚本.[1]打开你的夜神模拟器(或者连接你的手机) [2]打开桌面的Appium [3]下载你要测的App的apk文件,放到桌面[4]拖动你 ...
- Node.js 学习笔记之四:使用数据库
这部分示例将示范SQLite3.MongoDB这两种不同类型的数据库在 Node.js 中的使用方法.首先,我们要在code目录下执行mkdir 06_database命令来创建用于存放这一组示例的目 ...
- ArcGIS Pro 二次开发
本文基于 Windows7 + VS2019 + .NET Framework 4.8 + ArcGIS Pro 2.5.22081 开发和撰写. 目录 开发环境配置 获取ArcGIS Pro 安装V ...
- 【pytest】teardown里的yield和addfinalizer
在之前介绍pytest中的fixture用法的文章中https://zhuanlan.zhihu.com/p/87775743,提到了teardown的实现. 最近在翻pytest官方文档的时候,又发 ...
- Johnson全源最短路
例题:P5905 [模板]Johnson 全源最短路 首先考虑求全源最短路的几种方法: Floyd:时间复杂度\(O(n^3)\),可以处理负权边,但不能处理负环,而且速度很慢. Bellman-Fo ...
- IIS上传文件最大限制问题
IIS服务器文件最大限制默认是30M. 自定义方法:修改配置文件,路径是:C:\Windows\System32\inetsrv\Config\applicationHost.config 在requ ...
- Vue文件模板
<template> <div> </div> </template> <script> export default { } </s ...
- 20190916-01linux文件与目录结构 000 001
1./bin 是Binary的缩写,这个目录存放着最经常使用的命令 2./sbin s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序 3./home 存放普通用户的主目录,在 ...