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. 力扣48(java)-旋转图像(中等)

    题目: 给定一个 n × n 的二维矩阵 matrix 表示一个图像.请你将图像顺时针旋转 90 度. 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要 使用另一个矩阵来旋转图像 ...

  2. TiDB、OceanBase、PolarDB-X、CockroachDB二级索引写入性能测评

    简介: 二级索引是关系型数据库相较于NoSQL数据库的一个关键差异.二级索引必须是强一致的,因此索引的写入需要与主键的写入放在一个事务当中,事务的性能是二级索引性能的基础.本次测试将重点关注不同分布式 ...

  3. 技术实践第三期|HashTag在Redis集群环境下的使用

    ​简介:欢迎了解友盟+技术干货第三期内容:Redis集群环境如何按照前缀批量删除缓存.希望能对开发者们在实际应用中有所帮助. 一.背景 数据源列表添加缓存支持,types字段可传多值,如app, mi ...

  4. Spring Cloud Gateway一次请求调用源码解析

    简介: 最近通过深入学习Spring Cloud Gateway发现这个框架的架构设计非常简单.有效,很多组件的设计都非常值得学习,本文就Spring Cloud Gateway做一个简单的介绍,以及 ...

  5. TSDB时序数据库时序数据压缩解压技术浅析

    ​简介: 目前,物联网.工业互联网.车联网等智能互联技术在各个行业场景下快速普及应用,导致联网传感器.智能设备数量急剧增加,随之而来的海量时序监控数据存储.处理问题,也为时序数据库高效压缩.存储数据能 ...

  6. 在线运行代码的 PHP 沙盒环境实现

      演示: 多版本PHP运行代码 作用: 方便作为独立的调试环境运行 一些 临时逻辑,查看执行结果. 方便比较不同版本的 PHP 执行差异,进行一般的兼容性测试. 思路: Docker镜像构建多个PH ...

  7. dotnet SemanticKernel 入门 开篇

    本文将开坑告诉大家什么是 SemanticKernel 以及如何使用框架 众所周知 GPT 是一个大语言模型,能够参与的输入和输出是文本内容.而想要让 GPT 完成各项功能,则需要对接现有的编程世界. ...

  8. 有意思!一个关于 Spring 历史的在线小游戏

    发现 Spring One 的官网上有个好玩的彩蛋,分享给大家! 进到Spring One的官网,可以看到右下角有个类似马里奥游戏中的金币图标. 点击该金币之后,会打开一个新的页面,进入下面这样一个名 ...

  9. 12、web 中间件加固-apache 加固

    1.账号设置 1.1.防止 webshell 越权使用 修改 httpd.conf:/etc/httpd/conf/httpd.conf 或编译路径下 /conf/httpd.conf 检查程序启动账 ...

  10. MinDoc 编译安装(linux环境)

    目录 MinDoc 简介 项目地址: 下面以 Linux 系统为例: Gomod方式安装 下载项目代码到本地 写入依赖 下载依赖 创建数据库 配置数据库 编译main.go 提升文件权限 初使化数据库 ...