当需要输出的日志很多的时候,每次修改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 纯代码配置的更多相关文章

  1. log4net保存到数据库系列四、完整代码配置log4net

    园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...

  2. 纯java配置SpringMVC

    一般情况下,我们会在web.xml下配置好Spring和SpringMVC,并指定好它们的配置文件 是最常用的也是最方便的方法 例如: web.xml <!-- The definition o ...

  3. Spring MVC4 纯注解配置教程

    阅读本文需要又一定的sping基础,最起码要成功的运行过一个SpringMvc项目. 在传统的Spring项目中,我们要写一堆的XML文件.而这些XML文件格式要求又很严格,很不便于开发.而网上所谓的 ...

  4. log4net的基本配置及用法

    [1].[代码] [C#]代码 跳至 [1] [2] ? 1 2 using System.Reflection;  //使用反射 static private ILog log = log4net. ...

  5. iOS高仿app源码:纯代码打造高仿优质《内涵段子》

    iOS高仿app源码:纯代码打造高仿优质<内涵段子>收藏下来 字数1950 阅读4999 评论173 喜欢133 Github 地址 https://github.com/Charlesy ...

  6. log log4net用代码记录日志

    log4net  用代码记录日志 今天在开发项目的时候,遇到跨域调用log4net中的类,出现了一个bug,提示LogImpl未标记可序列化,此时,我靠,麻烦了,这个类又不是咱们自己的,改源码我想应该 ...

  7. Android 纯代码加入点击效果

    项目中非常多的Button, 同一时候配置非常多button切图,Selector是不是非常烦, 使用以下这个类,就能够直接为Button添加点击效果. 不用多个图片,不用Selector. 使用方法 ...

  8. iOS UICollectionView(转一) XIB+纯代码创建:cell,头脚视图 cell间距

    之前用CollectionViewController只是皮毛,一些iOS从入门到精通的书上也是泛泛而谈.这几天好好的搞了搞苹果的开发文档上CollectionViewController的内容,亲身 ...

  9. 关于什么是SpringMVC,和SpringMVC基于xml配置、注解配置、纯注解配置

    首先我们先要了解一下,什么是SpringMVC? SpringMVC是Spring框架内置的MVC的实现.SpringMVC就是一个Spring内置的MVC子框架,也就是说SpringMVC的相关包都 ...

随机推荐

  1. 人到中年的程序员,请提前准备好 Plan B

    中年程序员的生存现状已经是老生常谈的话题了,有多老呢?十年前,就有一位名叫"johnfx"的程序员谈过这个话题,并且专门为此写了一篇文章.随着中年程序员生存现状的话题再次成为热点, ...

  2. jQuery入口函数与JavaScript入口函数的区别

    jQuery  的入口函数是在  html  所有标签 (DOM) 都加载之后就会去执行 JavaScript  的  window.onload  时间是等到所有内容,包括外部图片之类的文件加载完成 ...

  3. Python3 高级编程技巧(部分)

    目录: 在列表.字典.集合中筛选数据 为元组元素命名 通过列表.元组创建字典 字典排序 寻找字典的公共键 让字典保持有序 生成器函数 yield协程 同时遍历值与下标 在列表.字典.集合中筛选数据 很 ...

  4. Xutils 的框架问题retry error, curr request is null Android开发之网络请问问题

    没有网络权限也能导致这个问题 也可能是因为模拟机没联网的问题

  5. Unity Plugins的使用方法

    一.为插件设置平台的方法 unity5之前,是通过把插件搞到对应目录进行区分平台的(比如在build target是ios平台时只把IOS目录的插件build进去),unity5之后提供了设置平台/c ...

  6. springBoot整合spring security+JWT实现单点登录与权限管理--筑基中期

    写在前面 在前一篇文章当中,我们介绍了springBoot整合spring security单体应用版,在这篇文章当中,我将介绍springBoot整合spring secury+JWT实现单点登录与 ...

  7. Spring源码分析 手写简单IOC容器

    Spring的两大特性就是IOC和AOP. IOC Container,控制反转容器,通过读取配置文件或注解,将对象封装成Bean存入IOC容器待用,程序需要时再从容器中取,实现控制权由程序员向程序的 ...

  8. The Unique MST(最小生成树的唯一性判断)

    Given a connected undirected graph, tell if its minimum spanning tree is unique. Definition 1 (Spann ...

  9. Postman发送POST请求到Spring Boot的正确姿势

    最近用Spring Boot搭建了一些restful api,写起来真的很爽.但是当用Postman测试一些POST请求的接口的时候却遇到一些问题,上网冲浪查了一堆博客资料,发现都讲得不清不楚,于是记 ...

  10. 水仙花数的条件:1.是一个三位数,2.个百千位数字的3次方加起来的和等于当前的三位数。如果,想要完美一点可以在外部加while循环

    #!/usr/bin/env python# -*- coding: utf-8 -*-print("请输入三位数:")num = input()# 定义常量SumNum = 0# ...