.net core 项目使用log4net

news/2025/1/7 5:30:42/文章来源:https://www.cnblogs.com/wangxlei/p/18527382

引入nuget包

 

1.增加一个log4Net.config的文件

<?xml version="1.0" encoding="utf-8" ?>
<log4net><appender name="DebugAppender" type="log4net.Appender.DebugAppender" ><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /></layout></appender><!--指定日记记录方式,以滚动文件的方式(文件记录)--><appender name="RollingFile" type="log4net.Appender.RollingFileAppender"><!--日志路径--><file value="log\" /><!--是否是向文件中追加日志--><appendToFile value="true" /><!--log保留天数--><param name= "MaxSizeRollBackups" value= "10"/><!--每个文件最大3M--><param name="maximumFileSize" value="3MB" /><!--日志根据日期滚动--><param name="RollingStyle" value="Date" /><!--日志文件名格式为:logs_20230431.log--><param name="DatePattern" value="&quot;logs_&quot;yyyyMMdd&quot;.log&quot;" /><!--日志文件名是否是固定不变的--><param name="StaticLogFileName" value="false" /><!--布局--><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception" /></layout></appender><root><level value="ALL"/><appender-ref ref="DebugAppender" /><appender-ref ref="RollingFile" /></root>
</log4net>

 

2.在program.cs中增加这段代码

 

 3.增加帮助类

 ILogHelper.cs

  /// <summary>/// 日志工具接口类/// </summary>public interface ILogHelper{public void LogErr(string throwMsg, Exception ex);public void LogErr(string errkey, string errmsg);public void LogInfo(string key, string msg);public void LogInfo(string msg);}

Log4NetHelper.cs

/// <summary>/// log4net日志初始化 这里就读取多个配置节点/// </summary>public static class Log4NetHelper{private static readonly ILog _logError = LogManager.GetLogger(Assembly.GetCallingAssembly(), "LogError");private static readonly ILog _logNormal = LogManager.GetLogger(Assembly.GetCallingAssembly(), "LogNormal");private static readonly ILog _logAOP = LogManager.GetLogger(Assembly.GetCallingAssembly(), "LogAOP");public static void LogErr(string info, Exception ex){if (_logError.IsErrorEnabled){_logError.Error(info, ex);}}public static void LogErr(string message){if (_logError.IsErrorEnabled){_logError.Error(message);}}public static void LogNormal(string info){if (_logNormal.IsInfoEnabled){_logNormal.Info(info);}}public static void LogAOP(string key, string info){if (_logAOP.IsInfoEnabled){_logAOP.Info($"{key}:{info}");}}public static void LogAOP(string info){if (_logAOP.IsInfoEnabled){_logAOP.Info(info);}}}

LogHelper.cs

/// <summary>/// 日志工具实现类/// </summary>public class LogHelper : ILogHelper//<T>
    {private readonly ILogger _logger;public LogHelper(ILogger<LogHelper> logger){_logger = logger;}public void LogErr(string throwMsg, Exception ex){var errorMsg =$"【抛出信息】:{throwMsg} \r\n<br/>【异常类型】:{ex.GetType().Name} \r\n<br/>【异常信息】:{ex.Message} \r\n<br/>【堆栈调用】:\r\n<br/>{ex.StackTrace}\r\n<br/>【堆栈调用】:\r\n<br/>{ex.ToString()}";_logger.LogError(errorMsg);}public void LogErr(string errkey, string errmsg){_logger.LogError(errkey + ":" + errmsg);}public void LogInfo(string key, string msg){_logger.LogInformation(key + ":" + msg);}public void LogInfo(string msg){_logger.LogInformation(msg);}}

可以这样使用

Log4NetHelper.LogNormal(@$"读取失败,抛出异常:{ex.Message}{Environment.NewLine}堆栈跟踪:{ex.StackTrace}");

日志存放路径在bin文件下

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/827064.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE中材质平铺随物体动态缩放

有两种主要方法实现材质对物体的动态平铺效果:

语忆科技携手火山引擎数据飞轮 探索智能客服场景新可能

放弃支付、申请退款、购后差评……消费者在电商平台的每一项操作背后,其实都有原因。而这些原因,往往深藏于消费者与商家客服沟通的十几条甚至几十条对话之中。在杭州语忆科技有限公司 CTO 魏志成看来,消费者与商家客服的沟通内容,其实是品牌商的一项重要数据资产,“一个愿…

『玩转Streamlit』--登录认证机制

如果你的Streamlit App中使用的数据的比较敏感,那么,保护这个App及其背后的数据免受未授权访问变得至关重要。 无论是出于商业机密的保护、用户隐私的维护,还是为了满足日益严格的合规要求,确保只有经过验证的用户才能访问特定的数据和功能,已成为大部分应用的一个基本需求…

《图解设计模式》 第五部分 访问数据结构

第十三章 Visotor 模式public class file extends entry{/* 省略 */puhblic void accept(Visitor v){v.visit(this);} }public class Main{public static void main(String args){Directory rootdir = new Dirctory("root");/* 省略 */rootdir.accept(new ListVisito…

Harbor双主复制高可用部署

环境信息:主机名称 IP 备注harbor01 192.168.61.56 harbor1服务器harbor02 192.168.61.57 harbor2服务器192.168.61.59 Nginx代理192.168.61.56/57 两个节点分别部署docker-ce ,docker-compose,harbor-offline-installer-v2.9.1.tgz部署docker-ce docker-composewget -P /etc/…

经济下行,当下企业如何破局?

禅道前几天刚发布的企业决策分析解决方案2.0中,增加了适合IPD市场分析的3C战略三角模型。我想借着此次发布,和大家分享一下企业如何落地IPD,让企业的真金白银不浪费。大家好,我是陈哥,今天想和大家聊聊企业如何落地IPD~ 华为实施IPD的巨大成功激励了众多的中国企业,很多企…

强化学习理论-第1课-基础概念

1. state:状态,可以是机器人的位置,速度,加速度等2. action:对于每一个状态,可能的动作3. state transition:状态转移3.1 state transition probability:4. policy:告诉agent在这个状态应该采用哪个action

强!34.1K star! 再见Postman,新一代API测试利器,功能强大、颜值爆表!

1、引言 在当今的互联网时代,API(应用程序编程接口)已经成为连接不同软件系统的桥梁。作为一名开发者,掌握API测试技能至关重要。市面上的API测试工具琳琅满目,今天我们要介绍的是一款开源、跨平台的API测试工具——Insomnia。 2、Insomnia介绍 Insomnia是一款功能丰富、易…

kubernetes删除ns异常状态为:Terminating

用kubernetes-API删除 1、首先,获取要删除 NameSpace 的 JSON 文件:替换其中的 <terminating-namespace> 为实际 namespace kubectl get namespace <terminating-namespace> -o json >tmp.json[root@master01 ~]# kubectl get namespace kuboard -o json >…