首页 > 其他分享 >.net core 项目使用log4net

.net core 项目使用log4net

时间:2024-11-05 10:42:32浏览次数:6  
标签:log4net core logger string void static ex net public

引入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中增加这段代码

 

.ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>()
                    .ConfigureLogging((hostingContext, builder) =>
                     {
                         //该方法需要引入Microsoft.Extensions.Logging命名空间
                         builder.AddFilter("System", LogLevel.Error); //过滤掉系统默认的一些日志
                         builder.AddFilter("Microsoft", LogLevel.Error);//过滤掉系统默认的一些日志

                         //添加Log4Net
                         var path = Path.Combine(Directory.GetCurrentDirectory(), "Log4net.config");
                         //不带参数,表示:log4net.config的配置文件就在应用程序的根目录下,可以指定配置文件的路径
                         //添加nuget包,Microsoft.Extensions.Logging.Log4Net.AspNetCore
                         builder.AddLog4Net(path);
                     });
                });

 

 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文件下

 

标签:log4net,core,logger,string,void,static,ex,net,public
From: https://www.cnblogs.com/wangxlei/p/18527382

相关文章

  • 基于卷积神经网络的大豆病虫害识别与防治系统,resnet50,mobilenet模型【pytorch框架+pyt
     更多目标检测和图像分类识别项目可看我主页其他文章功能演示:大豆病虫害识别与防治系统,卷积神经网络,resnet50,mobilenet【pytorch框架,python源码】_哔哩哔哩_bilibili(一)简介基于卷积神经网络的大豆病虫害识别与防治系统是在pytorch框架下实现的,这是一个完整的项目,包括代码,......
  • 4、.Net 快速开发框架:中台Admin - 开源项目研究文章
    中台Admin通常指的是一种基于中台架构思想的管理后台系统。中台架构是一种将企业的核心能力下沉为服务,通过服务的共享和复用,支持前台业务快速创新的架构模式。中台Admin作为中台架构的管理和运营界面,承担着配置、监控、调度等重要职责。以下是中台Admin的一些关键特点:......
  • kubernetes删除ns异常状态为:Terminating
    用kubernetes-API删除1、首先,获取要删除NameSpace的 JSON 文件:替换其中的<terminating-namespace>为实际namespacekubectlgetnamespace<terminating-namespace>-ojson>tmp.json[root@master01~]#kubectlgetnamespacekuboard-ojson>tmp.json2、编辑......
  • .net core 使用定时任务 quartz.net 实例
    项目是core3.1的 只用引用一个包就可以了引用配置Quartz首先创建一个任务工厂publicclassCronJobFactory:IJobFactory{privatereadonlyIServiceProvider_serviceProvider;publicCronJobFactory(IServiceProviderserviceProvider){_ser......
  • 在不受支持的 Mac 上安装 macOS Sequoia (OpenCore Legacy Patcher v2.1.0)
    在不受支持的Mac上安装macOSSequoia(OpenCoreLegacyPatcherv2.1.0)InstallmacOSonunsupportedMacs请访问原文链接:在不受支持的Mac上安装macOS(索引页面)查看最新版。原创作品,转载请保留出处。作者主页:sysin.org2024-11-01,OpenCoreLegacyPatcher2.1.0发......
  • Nature Genetics | 基因组所周永锋团队建立葡萄全基因组选择育种体系
    葡萄是一种具有重要经济价值的多年生水果作物,可作为水果食用或作为酿造葡萄酒的原材料,已有逾万年的驯化历史[1],并且在驯化过程中积累了大量的有害突变[1-3]。由于育种周期长,育种性状的遗传学研究不深入,遗传转化体系不成熟,尚未广泛应用多组学与人工智能等革命性技术,葡萄的生物育种......
  • Nat. Genet | 中农董朝斌团队揭示玉米驯化基因tsh4在株型和穗型发育中的调控作用
    在玉米从其祖先大刍草驯化而来的8000至10000年历史中,其株型和穗型经历了显著的演变。尽管株型和穗型分别与营养器官和生殖器官相关,但它们在发育过程中有着紧密的联系和共同的遗传基础。尽管已知几个关键基因如_tb1、tga1、tru1、gt1_在玉米驯化中起作用,但这些基因如何协同调控株型......
  • Kubernetes-K8S的安装
    前言:望大家可以跟着我的走,我将自己踩的坑都会一一说出来,尽量为大家踩出一条没有荆棘的路,有问题大家可以留言和私信我会一一解答,我不是大神就是一个学习小伙汁,那么接下来让我们开始安装步骤建议使用阿里云的服务器首先开通三个2核2G的ECS云服务器(按量付费)安装Kuber......