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的相关包都 ...
随机推荐
- SLS案例中心
今日PV nginx日志查看今日的PV和昨日的对比,先通过count函数计算总的pv,再用compare函数得出今日的pv和昨日的同比. 通过单值图进行展示,显示值为20.381Mil,对比值为-2% ...
- javascript正则用法
一.元字符 . 匹配除了换行符以外的字符. \w 匹配字母或者数字或者下划线 \W 匹配不是字母.数字.下划线 \d 匹配数字,相当于[0-9] \D 匹配不是数字的字符 \s ...
- zero:如何找到SEO流量的突破口
http://www.wocaoseo.com/thread-326-1-1.html 之前一篇文章已有提到过,SEO可以分为两个阶段: 一个阶段是了解点SEO知识,然后就到网站上去找页面,看哪些招式 ...
- Salesforce LWC学习(二十二) 简单知识总结篇二
本篇参看: https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.reactivity_fi ...
- AD18使用原理图优先选项( Preference)调整原理图纸张大小失效问题解决
1.创建新的原理图纸后,在当前点击更改并不会生效 2.想要生效需要去原理图纸的文档详细属性中更新即可生效!以下两种方式可以打开文档选项按钮. a.O->D 打开文档选项 b.右下角选择Prope ...
- windows版redis报错:本地计算机上的Redis服务启动后停止
解决 1.如果需要临时启动Redis 使用命令:redis-server.exe redis.windows.conf --maxheap 200m 说明:200m是指定最大堆内存是200m, ...
- Cross-Site Scripting: Reflected
首先贴解决办法吧,解决了我项目中的问题,不一定适用所有情况. //For Cross-Site Scripting: Reflected public static String filter(Str ...
- 在CG/HLSL中访问着色器的内容
着色器在Properties代码块中声明 材质球的各种特性.如果你想要在着色器程序中使用这些特性,你需要在CG/HLSL中声明一个变量,这个变量需要与你要使用的特性拥有同样的名字和对的上号的类型.比如 ...
- java返回树形结构的正确姿势
业务场景 通常我们前端需要一个树形的导航菜单或者分类菜单,如后台权限管理中的权限树,亦或者下面例子中商城系统的商品分类多级菜单(一般为三级菜单) 数据库设计 数据库设计,采用parentId来指向自己 ...
- Linq 下的扩展方法太少了,您期待的 MoreLinq 来啦
一:背景 1. 讲故事 前几天看同事在用 linq 给内存中的两个 model 做左连接,用过的朋友都知道,你一定少不了一个叫做 DefaultIfEmpty 函数,这玩意吧,本来很流畅的 from. ...