.netcore项目中使用log4net
log4net配置文件
引入log4net包,创建一个config目录,专门用来放配置文件,添加log4net.config文件。

编写配置文件。
<?xml version="1.0" encoding="utf-8"?>
<configuration> <log4net>
<!-- 错误日志类-->
<logger name="errLog">
<level value="ALL" />
<appender-ref ref="ErrorAppender" />
</logger>
<!-- 错误日志附加介质-->
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<!--日志文件路径,会自动创建-->
<param name="File" value="Log\\LogError\\" />
<!--是否是向文件中追加日志-->
<param name="AppendToFile" value="true" />
<!--log备份文件最大数量,超过设置数量会滚动覆盖之前的日志-->
<param name="MaxSizeRollBackups" value="" />
<!--最大文件大小,默认10MB(数据类型:long)等同于maximumFileSize参数-->
<param name="MaxFileSize" value="" />
<!--最大文件大小(KB/MB/GB)-->
<!--<param name="MaximumFileSize" value="1MB" />-->
<!--日志文件名是否是固定不变的-->
<param name="StaticLogFileName" value="false" />
<!--日志文件名格式为:--.log-->
<param name="DatePattern" value="yyyy-MM-dd".htm"" />
<!--日志滚动方式:混合方式(文件大小和日期)-->
<param name="RollingStyle" value="Composite" />
<!--异常日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=red>%n【异常时间】:%d [%t] <BR>%n【异常级别】:%-5p <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender> <!-- 信息日志 -->
<logger name="infoLog">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>
<!-- 信息日志附加介质-->
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogInfo\\" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="" />
<param name="MaximumFileSize" value="1024KB" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyy-MM-dd".htm"" />
<param name="RollingStyle" value="Composite" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=blue>%n【日志时间】:%d [%t] <BR>%n【日志级别】:%-5p <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender> </log4net> </configuration>
日志帮助类
首先创建一个仓储类
public class Log4NetRepository
{
public static ILoggerRepository loggerRepository { get; set; }
}
/// <summary>
/// log4net帮助类
/// AdoNetAppender仅支持到.net framework4.5,不支持在.net core项目中持久化日志到数据库
/// </summary>
public class LogHelper
{
// 异常 // 注意:logger name不要写错
private static readonly ILog logerror = LogManager.GetLogger(Log4NetRepository.loggerRepository.Name, "errLog");
// 记录
private static readonly ILog loginfo = LogManager.GetLogger(Log4NetRepository.loggerRepository.Name, "infoLog"); public static void Error(string throwMsg, Exception ex)
{
string errorMsg = string.Format("【异常描述】:{0} <br>【异常类型】:{1} <br>【异常信息】:{2} <br>【堆栈调用】:{3}",
new object[] {
throwMsg,
ex.GetType().Name,
ex.Message,
ex.StackTrace });
errorMsg = errorMsg.Replace("\r\n", "<br>");
logerror.Error(errorMsg);
} public static void Info(string message)
{
loginfo.Info(string.Format("【日志信息】:{0}",message));
} }
startup引用log4net,log4net.Config,log4net.Repository。在startup的构造函数中这么配置:
public static ILoggerRepository repository { get; set; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
// log4net 仓储
repository = LogManager.CreateRepository("CoreLogRepository");
XmlConfigurator.Configure(repository, new FileInfo("config/log4net.config"));
Log4NetRepository.loggerRepository = repository;
}
之前写好了全局异常捕获,现在可以加上这么一句。
public class ApiExceptionFilter:ExceptionFilterAttribute
{
private IHostingEnvironment _env;
public ApiExceptionFilter(IHostingEnvironment env)
{
_env = env;
} public override void OnException(ExceptionContext context)
{
if (context.ExceptionHandled)
{
return;
}
LogHelper.Error(exMsg, context.Exception); // 日志记录
var exMsg = context.Exception.Message;
ApiResp resp = new ApiResp(ApiRespCode.E999999,exMsg);
// 开发环境显示异常信息
if(_env.IsDevelopment())
{
resp.Message = exMsg;
}
context.Result = new JsonResult(resp);
context.ExceptionHandled = true;
}
}
当发生异常时,会自动在项目目录创建Log\LogError\目录,并写入日志文件。
.netcore项目中使用log4net的更多相关文章
- asp.net Web项目中使用Log4Net进行错误日志记录
使用log4net可以很方便地为应用添加日志功能.应用Log4net,开发者可以很精确地控制日志信息的输出,减少了多余信息,提高了日志记录性能.同时,通过外部配置文件,用户可以不用重新编译程序就能 ...
- C# 在项目中配置Log4net
我们介绍一下在项目中配置log4net,是Apache基金会旗下的. 无论在什么环境中,配置log4net的逻辑都一样. 1)文件配置 首先在项目加载文件中,配置log4net加载项. 在Web项目中 ...
- Web项目中使用Log4net 案例
简介: 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题. 经验表明,日 ...
- netcore项目中IStartupFilter使用
背景: netcore项目中有些服务是在通过中间件来通信的,比如orleans组件.它里面服务和客户端会指定网关和端口,我们只需要开放客户端给外界,服务端关闭端口.相当于去掉host,这样省掉了些指定 ...
- 在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息
在我们常规的调试或者测试的时候,喜欢把一些测试信息打印在控制台或者记录在文件中,对于.netframework项目来说,我们输出控制台的日志信息习惯的用Console.WriteLine来输出查看,不 ...
- 在类库项目中使用log4net(RollingFileAppender)记录日志
1.创建解决方案 2.创建类库项目 3.根据需要修改命名空间,修改(和/或)添加类到类库 4.引用log4net 5.类库项目根目录下创建leg4net配置文件,如D3CallTriggerPlugi ...
- VS2010中NET4项目中使用LOG4NET办法
两年以前项目中是用的log4net.dll是net2.0环境下面的,最近在官网http://logging.apache.org/log4net/download_log4net.cgi找到了net4 ...
- web项目中的 log4net的配置
最近用log4net,网上查了很多资料,照着网上的配置大多都不管用,可能我还是有什么地方配置的不对.看出来的朋友平指出.下面是我自己亲测的,可以用! 1.web项目中的web.config 配置log ...
- 在 .NetCore 项目中使用 SkyWalkingAPM 踩坑排坑日记
SkyWalking 概述 SkyWalking 是观察性分析平台和应用性能管理系统.提供分布式追踪.服务网格遥测分析.度量聚合和可视化一体化解决方案.支持Java, .Net Core, PHP, ...
随机推荐
- 123457123456#0#-----com.threeapp.XueShuXue013----儿童学数学(13种方法)
com.threeapp.XueShuXue013----儿童学数学(13种方法)
- React Native设置图片全屏背景显示
显示效果如下: 实现和页面代码如下: 1> 使用的react-navigation隐藏导航栏: AddTopic: {screen: AddTopicScreen,navigationOptio ...
- 给 textbox TextMode="password" 赋值后显示出来
在做一个修改用户资料的页面的时候,发现用 <asp:TextBox ID="txtPwd" runat="server" TextMode="P ...
- linux EXT4格式分区扩容
1.查看现有的分区大小 2.关机增加磁盘大小为100G 3.查看磁盘扩容后状态 lsblk或dh -TH 4.进行分区扩展磁盘,保留根目录的起止位置. 5.删除根分区,不要保存 6.创建分区, ...
- Python3多重继承排序原理(C3算法)
参考:https://www.jianshu.com/p/c9a0b055947b https://xubiubiu.com/2019/06/10/python-%E6%96%B9%E6%B3%95% ...
- jenkins+sonar发送结果邮件的状态问题修复
在我的这篇博文中:使用jenkins+sonar进行代码扫描,并发送自定义邮件 邮件的配置为默认的$PROJECT_DEFAULT_SUBJECT 所以发送的邮件标题中的状态是jenkins构建的状态 ...
- 修改centos7命令行控制台屏幕分辨率
1) vi /etc/sysconfig/grub 2) GRUB_CMDLINE_LINUX 在rhgb前加 vga=0x0317 (317为分辨率编码) 3) grub2-mkconfig - ...
- 使用SWO代替UART,实现Printf打印功能
JTAG接口中,有个SWO引脚,一直没有在意,也没有去研究过是干嘛用的.直到发现ST-LINK V2-1上也有个SWO引脚,于是去研究学习它的作用,用起来相比UART方得便多. 本文内容已经整理成PD ...
- 【ARM-Linux开发】Linux查看设备驱动
驱动操作命令: insmod / modprobe 加载驱动 rmmod 卸载驱动 lsmod 查看系统中所有已经被 ...
- 给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换)
需求:给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换) 如: a 不替换 b 不替换 ab 不替换 ba 不替换 aba 不替换 aab 替换为 ...