C# log4net 不输出日志
一个新项目,直接用了一些之前的代码,突然跟踪不到日志了。检查发现了原因,特在此记录。
log4net的配置文件log4net_config.xml
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="TastInfo" type="log4net.Appender.RollingFileAppender">
<file value="Log\\Info\\" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="-1" />
<maximumFileSize value="1MB" />
<staticLogFileName value="false" />
<DatePattern value="yyyy-MM-dd".txt""/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level - %message%newline" />
</layout>
</appender>
<appender name="TastError" type="log4net.Appender.RollingFileAppender">
<file value="log\\Error\\" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="-1" />
<maximumFileSize value="1MB" />
<staticLogFileName value="false" />
<DatePattern value="yyyy-MM-dd".txt""/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level - %message%newline" />
</layout>
</appender>
<appender name="TastDebug" type="log4net.Appender.RollingFileAppender">
<file value="log\\Debug\\" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="-1" />
<maximumFileSize value="1MB" />
<staticLogFileName value="false" />
<DatePattern value="yyyy-MM-dd".txt""/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level - %message%newline" />
</layout>
</appender>
<logger name="Info">
<level value="ALL"/>
<appender-ref ref="Info" />
<appender-ref ref="TastInfo" />
</logger>
<logger name="Error">
<level value="ALL"/>
<appender-ref ref="Error" />
<appender-ref ref="TastError" />
</logger>
<logger name="Debug">
<level value="ALL"/>
<appender-ref ref="Debug" />
<appender-ref ref="TastDebug" />
</logger>
</log4net>
log4net的应用错误代码:
public class Log
{
private static string DefaultName = "log";
static Log()
{
string path = AppDomain.CurrentDomain.BaseDirectory + @"\log4net_config.xml";
log4net.Config.XmlConfigurator.Configure(new FileInfo(path));
}
public static log4net.ILog GetLog(string logName)
{
log4net.ILog log = log4net.LogManager.GetLogger(logName);
return log;
}
public static void debug(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsDebugEnabled)
log.Debug(message);
log = null;
}
public static void debug(string message, Exception ex)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsDebugEnabled)
log.Debug(message, ex);
log = null;
}
public static void error(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsErrorEnabled)
log.Error(message);
log = null;
}
public static void error(string message, Exception ex)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsErrorEnabled)
log.Error(message, ex);
log = null;
}
public static void fatal(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsFatalEnabled)
log.Fatal(message);
log = null;
}
public static void info(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsInfoEnabled)
log.Info(message);
log = null;
}
public static void warn(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsWarnEnabled)
log.Warn(message);
log = null;
}
}
不输出日志的原因是因为, 默认private static string DefaultName = "log",在配置文件里面找不到对应的节点值。
正确的应用代码:
public class Log
{
private const string SError = "Error";
private const string SDebug = "Debug";
private const string DefaultName = "Info";
static Log()
{
var path = AppDomain.CurrentDomain.BaseDirectory + @"\log4net_config.xml";
log4net.Config.XmlConfigurator.Configure(new FileInfo(path));
}
public static log4net.ILog GetLog(string logName)
{
var log = log4net.LogManager.GetLogger(logName);
return log;
}
public static void Debug(string message)
{
var log = log4net.LogManager.GetLogger(SDebug);
if (log.IsDebugEnabled)
log.Debug(message);
}
public static void Debug(string message, Exception ex)
{
var log = log4net.LogManager.GetLogger(SDebug);
if (log.IsDebugEnabled)
log.Debug(message, ex);
}
public static void Error(string message)
{
var log = log4net.LogManager.GetLogger(SError);
if (log.IsErrorEnabled)
log.Error(message);
}
public static void Error(string message, Exception ex)
{
var log = log4net.LogManager.GetLogger(SError);
if (log.IsErrorEnabled)
log.Error(message, ex);
}
public static void Fatal(string message)
{
var log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsFatalEnabled)
log.Fatal(message);
}
public static void Info(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsInfoEnabled)
log.Info(message);
}
public static void Warn(string message)
{
var log = log4net.LogManager.GetLogger(DefaultName);
if (log.IsWarnEnabled)
log.Warn(message);
}
}
C# log4net 不输出日志的更多相关文章
- 记一次排查log4net 不输出日志的解决过程
最近发现log4net 不输出日志了,重点排查几个地方,发现都没有问题. 1.[assembly: log4net.Config.XmlConfigurator(ConfigFile = " ...
- (六)Net Core项目使用Controller之一 c# log4net 不输出日志 .NET Standard库引用导致的FileNotFoundException探究 获取json串里的某个属性值 common.js 如何调用common.js js 筛选数据 Join 具体用法
(六)Net Core项目使用Controller之一 一.简介 1.当前最流行的开发模式是前后端分离,Controller作为后端的核心输出,是开发人员使用最多的技术点. 2.个人所在的团队已经选择 ...
- log4net 按时间输出日志
参考:(转)非常完善的Log4net详细说明 log4net 按天与按小时记日志的配置 Log4net 中输出日志到文件,文件名根据日期生成 log4net按日志级别(debug,info,warn, ...
- log4net不同logger输出日志
4步曲 1.引用log4net.dll(nuget) 2.任意位置的命名空间头部加入下面的代码,web.config可修改为自己定义的.xml [assembly: log4net.Config.Xm ...
- log4net 本地环境没问题 生产环境无法输出日志
log4net输出日志大概分两块 1.程序代码编写问题 2.配置文件问题 当程序本地可以正常输出日志.配置文件也都正常可用的情况下,发布到生产环境后,有的程序可以输出日志,有的程序不可以输出,程序无问 ...
- log4net 配置完成后发现不能输出日志的解决方法
配置好log4net后发现日志不能输出,打开调试看一下几个属性都是false,(比如isdebugenable =false)这其实是项目的启动时候没有加入一行声明代码导致的,可以在程序的Assemb ...
- Log4net 根据日志类型输出日志
第一步:引入Log4net.dll 文件的引用 第二步:添加LogHelper类,代码如下 using System; using System.Collections.Generic; using ...
- .net core 中使用Log4net输出日志到Mysql数据库中
.net core 中使用Log4net输出日志到数据库中去 1.使用Nuget安装log4net 和 mysql.data 2.设置log4net 的配置文件 log4net.config 可以设置 ...
- Log4net入门(日志文件篇)
在上一篇Log4net入门(控制台篇)中,我们将日志信息输出到控制台中,在这一篇中,我们将描述如何将日志信息写到文件中.要将日志信息写入文件非常简单,只需要在Log4net.config配置文件中添加 ...
随机推荐
- 嵌入式调试器原理和各类调试器集锦(JLINK、STLINK、CCDEBUG)
工欲善其事,必先善其器.调试器在嵌入式开发调试中的重要性不言而喻,单步.断点和监察的效率远高于串口打印.但是,调试器对于一般开发人员往往是一个黑匣子.今天我们就来谈谈调试器的原理,顺便把自己的几类调试 ...
- 不小心改了Xcode系统的头文件,运行报错,解决办法
- iOS之 开发中用得到的开源github
github:无限图片轮播 https://github.com/dymx101/DYMRollingBanner 2.灌水动画 https://github.com/dsxNiubility/SXW ...
- 导出excel乱码问题
今天遇到一个问题,在用C#做导出excel的时候,出现excel乱码问题.百度了下. 发现问题如下: 非中文字符编码问题. 解决方法: 把输出的excel格式设置成UTF-8即可. 更改代码: Res ...
- 推送(PUSH)
一.本地推送 1.建立本地推送 UILocalNotification *notification = [[UILocalNotification alloc] init]; //推送的内容 noti ...
- eclipse常用快捷键及调试方法(虽然现在看不懂,但是感觉以后肯定会用到,先转了)
常用快捷键 Eclipse最全快捷键,熟悉快捷键可以帮助开发事半功倍,节省更多的时间来用于做有意义的事情. Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+D: 删除当前行 Ctrl ...
- linux编译安装MySQL
最近就想搞搞hadoop,然后装个MySQL,测试一下那个sqoop. MySQL这种东西,既然是开放源码的,那就源码安装吧. 下面是我的测试环境说明: VMware10+Ubuntu14.04 Ky ...
- Hibernate案例-------基于xml配置,使用Hibernate实现对员工表的增、删、改、查功能
1.1 问题 使用Hibernate实现对员工表的增.删.改.查. 1.2 方案 Hibernate使用步骤: 导入Hibernate包,以及数据库驱动包. 引入Hibernate主配置文件hiber ...
- Python Backup Files
近来书写 Python 脚本进行替换以前的 shell 脚本,发现 Python 优于 shell 的最直观的一点Python 结构明了,可读性高(本人认为)在此做一些记录 本次记录利用 Python ...
- Android Listener侦听的N种写法
Android中,View的Listener方法,在是否使用匿名类匿名对象时,有各种不同的写法. OnClickListener和其他Listener方法一样,都是View类的接口,重载实现后就能使用 ...