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的相关包都 ...
随机推荐
- soso官方:搜索引擎的对检索结果常用的评测方法
http://www.wocaoseo.com/thread-188-1-1.html 很久很久以前,搜索引擎还不象今天的百花齐放,人们对它的要求较低,只要它能把互连网上相关的网站搜出来, ...
- 基于postman的api自动化测试实践
测试的好处 每个人都同意测试很重要,但并不是所有人都会去做.每当你添加新的代码,测试可以保证你的api按照预期运行.通过postman,你可以为所有api编写和运行测试脚本. postman中的测试 ...
- 【解决】虚拟windows7无法安装VMware Tools
VMware安装虚拟windows7,在虚拟windows7上安装VMware Tools 报错VMware Alias Manager and Ticket 服务失败. Windows 无法启动 V ...
- Redis锁实现防重复提交和并发问题
@Slf4j @Component public class RedisLock { public static final int LOCK_EXPIRE = 5000; @Autowired pr ...
- Sqli-labs 1-10
Less 1-4(基础注入) 基础知识: table_schema:数据库的名称 table_name:表的名称 column_name:列的名称 information_schema:表示所有信息, ...
- 编写第一个 .NET 微服务
介绍 本文的目的是:通过创建一个返回列表的简单服务,并在 Docker 容器中运行该服务,让您熟悉使用 .NET 创建微服务的构建过程. 安装 .NET SDK 要开始构建 .NET 应用程序,首先下 ...
- 20190930-01 Redis的事务 000 031
- 20190923-03Linux时间日期类 000 011
1.基本语法 date [OPTION]... [+FORMAT] 2.选项说明 表1-20 选项 功能 -d<时间字符串> 显示指定的“时间字符串”表示的时间,而非当前时间 -s< ...
- MyBatis源码骨架分析
源码包分析 MyBatis 源码下载地址:https://github.com/MyBatis/MyBatis-3 MyBatis源码导入过程: 下载MyBatis的源码 检查maven的版本,必须是 ...
- TaskContinuationsOptions.ExecuteSynchronously探秘
TPL - Task Parallel Library为我们提供了Task相关的api,供我们非常方便的编写并行代码,而不用自己操作底层的Thread类.使用Task的优势是显而易见的: 提供返回值 ...