C#.NET根据不同业务类别类型写入不同文件中,动态创建log4net实例验证

参考了:https://www.cnblogs.com/-dawn/p/8598566.html

GetLog4netInstance:

using log4net;
using log4net.Appender;
using log4net.Config;
using log4net.Core;
using log4net.Filter;
using log4net.Layout;
using log4net.Repository;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Emit;
using System.Text; namespace ConsoleApp1
{
public class GetLog4netInstance
{ private static Dictionary<string, ILog> Logers = new Dictionary<string, ILog>(); /// <summary>
/// 获取log实例
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static ILog GetLogger(string name)
{
if (Logers.ContainsKey(name))
return Logers[name];
else
{
lock (Logers)
{
if (Logers.ContainsKey(name))
return Logers[name];
else
{
var newLoger = CreateLogerInstance(name);
Logers.Add(name, newLoger);
return newLoger;
}
}
}
} /// <summary>
/// 创建Log实例
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
private static ILog CreateLogerInstance(string name)
{
// Pattern Layout
//%d 时间,[%t] 线程ID,%-2.18M 方法名(最少2位,最多18位),%m%n 消息和换行
string PatternStr = "%d [%t] %-2.18M - %m%n";
PatternLayout layout = new PatternLayout(PatternStr); // Level Filter
LevelMatchFilter filter = new LevelMatchFilter();
filter.LevelToMatch = Level.All;
filter.ActivateOptions();
// File Appender
RollingFileAppender appender = new RollingFileAppender();
// 目录
//appender.File = $"logs\\{name}\\"; //按名称单独一个目录
appender.File = "logs\\"; // 所有名称放同一目录 // 立即写入磁盘
appender.ImmediateFlush = true;
// true:追加到文件;false:覆盖文件
appender.AppendToFile = true;
// 新的日期或者文件大小达到上限,新建一个文件
appender.RollingStyle = RollingFileAppender.RollingMode.Composite;
// 文件大小达到上限,新建文件时,文件编号放到文件后缀前面
appender.PreserveLogFileNameExtension = true;
// 时间模式
//appender.DatePattern = "yyyyMMdd'.txt'"; // 日期.txt
appender.DatePattern = "'" + name + "-'" + "yyyyMMdd'.txt'"; // 名称-日期.txt,"'名称-'yyyyMMdd'.txt'"
// 最小锁定模型以允许多个进程可以写入同一个文件
appender.LockingModel = new FileAppender.MinimalLock();
appender.Name = name+"Appender";
appender.AddFilter(filter);
appender.Layout = layout;
appender.ActivateOptions();
// 文件大小上限
appender.MaximumFileSize = "100MB";
// 设置无限备份=-1 ,最大备份数为30
appender.MaxSizeRollBackups = 999;
appender.StaticLogFileName = false;
//create instance
string repositoryName = name+"Repository";
ILoggerRepository repository = LoggerManager.CreateRepository(repositoryName);
BasicConfigurator.Configure(repository, appender);
//After the log instance initialization, we can get the instance from the LogManager by the special log instance name. Then you can start your logging trip.
ILog logger = LogManager.GetLogger(repositoryName, name);
return logger;
}
} }

使用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
try
{
var AccountLoger = GetLog4netInstance.GetLogger("DD-子商户号");
var BalanceLoger = GetLog4netInstance.GetLogger("A#.ZZ"); int i = 0;
while (i < 10)
{
string msg = i + ":hello world。";
BalanceLoger.Debug(msg);
AccountLoger.Debug(msg);
i++;
}
}
catch (Exception ex)
{
Console.WriteLine("ex!"+ex.Message);
}
Console.WriteLine("结束!");
Console.ReadKey();
}
}
}

效果:

END

C#.NET根据不同业务类别类型写入不同文件中,动态创建log4net实例验证的更多相关文章

  1. Java基础之序列化对象——将对象写入到文件中(SerializeObjects)

    控制台程序. 首先定义一个含有任意不同数据类型域的可序列化类: import java.io.Serializable; public class Junk implements Serializab ...

  2. 通俗易懂,C#如何安全、高效地玩转任何种类的内存之Span的脾气秉性(二)。 异步委托 微信小程序支付证书及SSL证书使用 SqlServer无备份下误删数据恢复 把list集合的内容写入到Xml中,通过XmlDocument方式写入Xml文件中 通过XDocument方式把List写入Xml文件

    通俗易懂,C#如何安全.高效地玩转任何种类的内存之Span的脾气秉性(二).   前言 读完上篇<通俗易懂,C#如何安全.高效地玩转任何种类的内存之Span的本质(一).>,相信大家对sp ...

  3. c#用log4Net将日志写入到Oracle数据库,并写入到文件中

    原文:c#用log4Net将日志写入到Oracle数据库,并写入到文件中 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https:/ ...

  4. C#通过OLEDB将DataTable写入Excel文件中

    利用OLEDB将DataTable数据写入Excel文件中,如果数据量过多,执行效率很缓慢,大数据量不推荐使用此方法. /// <summary> /// 创建DataTable /// ...

  5. Java基础之写文件——将多个字符串写入到文件中(WriteProverbs)

    控制台程序,将一系列有用的格言写入到文件中. 本例使用通道把不同长度的字符串写入到文件中,为了方便从文件中恢复字符串,将每个字符串的长度写入到文件中紧靠字符串本身前面的位置,这可以告知在读取字符串之前 ...

  6. PHP将数据写入指定文件中

    首先创建一个空的txt文件,这里我们创建了一个1.txt的空文件. 第一种方法:fwrite函数 <?php $file=fopen('1.txt','rb+'); var_dump(fwrit ...

  7. Python:将爬取的网页数据写入Excel文件中

    Python:将爬取的网页数据写入Excel文件中 通过网络爬虫爬取信息后,我们一般是将内容存入txt文件或者数据库中,也可以写入Excel文件中,这里介绍关于使用Excel文件保存爬取到的网页数据的 ...

  8. 将对象以json格式写入到文件中

    将 list 对象以json格式写入到文件中 try { ObjectMapper mapper = new ObjectMapper(); String value = mapper.writeVa ...

  9. 生成大量插入语句,并将语句写入txt文件中

    import java.io.*; /** * Created by czz on 2019/9/23. */ public class TTest { /** * 生成大量插入语句,并将语句写入tx ...

  10. 连接数据库查询 将查询结果写入exce文件中

    package com.cn.peitest.connectDatabase; import java.io.File; import java.lang.reflect.Field; import ...

随机推荐

  1. 力扣693(java)-交替位二进制数(简单)

    题目: 给定一个正整数,检查它的二进制表示是否总是 0.1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同. 示例 1: 输入:n = 5输出:true解释:5 的二进制表示是:101示例 ...

  2. 有效预警6要素:亿级调用量的阿里云弹性计算SRE实践

    简介: 关注保持良好的预警处理,持续解决系统隐患,促进系统稳定健康发展. 编者按:随着分布式系统和业务需求的飞速发展,监控告警在我们保障系统稳定性和事故快速恢复的全周期中都是至关重要的.9月3号,阿里 ...

  3. [Pholcus] Go项目 Pholcus 源码逻辑分析 species.go

    「代码结构」 结构体:蜘蛛种类列表(即:蜘蛛规则列表) 变量:全局蜘蛛种类实例 方法:向蜘蛛种类清单添加新种类 方法:获取全部蜘蛛种类 方法:通过名字获取蜘蛛 「总体功能」 添加新种类:通过 Spid ...

  4. [FE] uni-app 安装 uview-ui 的两种方式

    一. 下载的方式安装 就是把源码放到项目根目录中,然后引入 scss.js,并配置 easycom 模式. https://www.uviewui.com/components/install.htm ...

  5. IIncrementalGenerator 增量 Source Generator 生成代码入门 读取 csproj 项目文件的属性配置

    本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,读取项目里的项目文件属性,从而实现为项目定制的逻辑.或者是读取 NuGet ...

  6. K8s集群中部署SpringCloud在线购物平台(三)

    五.SpringCloud概述 springcloud架构图 5.1 SpringCloud是什么? 官网: https://spring.io/projects/spring-cloud Sprin ...

  7. STM32F10X 部分引脚不能使用的问题

    一.概述 说来惭愧,我到现在都没有完整的学习过STM32.接触 STM32 还是突然的一个项目,需要用到 STM32,紧急需求,只能边学边完成.不过好在 ST 的资料还是比较多的,相对也比较简单,基本 ...

  8. pde复习笔记 第一章 波动方程 第三节 分离变量法

    教材 谷超豪<数学物理方程>第四版,虽然我们老师用的第三版,但是除了页码对不上,习题多了一点,也似乎没有多少区别. 打算开个新栏专门总结一下pde的各种计算问题,在图书馆算的手麻了,但是习 ...

  9. ajax递归发送请求

    简介 大家都知道浏览器在处理http网络请求的时候,不同的浏览器会有不一样的并发限制,下表是一些主流浏览器对 HTTP 1.1 和 HTTP 1.0 的最大并发连接数目: Browser HTTP/1 ...

  10. Splashtop远程桌面再次增强:支持4K视频流

    远程桌面工具,主流的有10款总有,国内用的比较多的有teamviewer.Splashtop.向日葵等.几款软件各有千秋,其中Splashtop最大的特性就是快速.流畅.产品无敌,运营佛系,哈哈.下面 ...