一个新项目,直接用了一些之前的代码,突然跟踪不到日志了。检查发现了原因,特在此记录。

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&quot;.txt&quot;"/>
<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&quot;.txt&quot;"/>
<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&quot;.txt&quot;"/>
<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);
}
}
总结:log4net.LogManager.GetLogger(Name),这里面的Name要在配置文件中,有对应的节点值。

C# log4net 不输出日志的更多相关文章

  1. 记一次排查log4net 不输出日志的解决过程

    最近发现log4net 不输出日志了,重点排查几个地方,发现都没有问题. 1.[assembly: log4net.Config.XmlConfigurator(ConfigFile = " ...

  2. (六)Net Core项目使用Controller之一 c# log4net 不输出日志 .NET Standard库引用导致的FileNotFoundException探究 获取json串里的某个属性值 common.js 如何调用common.js js 筛选数据 Join 具体用法

    (六)Net Core项目使用Controller之一 一.简介 1.当前最流行的开发模式是前后端分离,Controller作为后端的核心输出,是开发人员使用最多的技术点. 2.个人所在的团队已经选择 ...

  3. log4net 按时间输出日志

    参考:(转)非常完善的Log4net详细说明 log4net 按天与按小时记日志的配置 Log4net 中输出日志到文件,文件名根据日期生成 log4net按日志级别(debug,info,warn, ...

  4. log4net不同logger输出日志

    4步曲 1.引用log4net.dll(nuget) 2.任意位置的命名空间头部加入下面的代码,web.config可修改为自己定义的.xml [assembly: log4net.Config.Xm ...

  5. log4net 本地环境没问题 生产环境无法输出日志

    log4net输出日志大概分两块 1.程序代码编写问题 2.配置文件问题 当程序本地可以正常输出日志.配置文件也都正常可用的情况下,发布到生产环境后,有的程序可以输出日志,有的程序不可以输出,程序无问 ...

  6. log4net 配置完成后发现不能输出日志的解决方法

    配置好log4net后发现日志不能输出,打开调试看一下几个属性都是false,(比如isdebugenable =false)这其实是项目的启动时候没有加入一行声明代码导致的,可以在程序的Assemb ...

  7. Log4net 根据日志类型输出日志

    第一步:引入Log4net.dll 文件的引用 第二步:添加LogHelper类,代码如下 using System; using System.Collections.Generic; using ...

  8. .net core 中使用Log4net输出日志到Mysql数据库中

    .net core 中使用Log4net输出日志到数据库中去 1.使用Nuget安装log4net 和 mysql.data 2.设置log4net 的配置文件 log4net.config 可以设置 ...

  9. Log4net入门(日志文件篇)

    在上一篇Log4net入门(控制台篇)中,我们将日志信息输出到控制台中,在这一篇中,我们将描述如何将日志信息写到文件中.要将日志信息写入文件非常简单,只需要在Log4net.config配置文件中添加 ...

随机推荐

  1. CSS ID选择器(三)

    一.ID选择器 ID选择器使用"#"前缀标识符进行标识,后面紧跟指定的元素的ID名称. 如 #box{ width:100px; height:100px;} 元素的ID名称是唯一 ...

  2. 一步步学敏捷开发:4、Scrum的3种角色

    在Scrum角色中包括:产品负责人(Product Owner,PO).ScrumMaster(SM).开发团队(Team). 角色:产品负责人(PO) Scrum团队只有一个产品负责人,他负责在限定 ...

  3. DEV 财务货币格式单元格

    在用友金蝶等财务软件中,经常需要输入货币类型的数据, 那么这种输入框要如何制作呢? 扩展DataGridView 的功能  出自在天空飞翔博客 http://www.cnblogs.com/micha ...

  4. 测试管理_出色测试管理者的思考[持续更新ing]

    如何合理安排并按质按量按时完成每一个测试任务,做好项目管理? 如何把控到每一个测试任务的质量? 如何快速构建和构建好测试环境? 如何获取或快速制作测试数据? 如何确保每一个测试人员的工作都饱满? 如何 ...

  5. HttpClient使用方法(包括POST文件)

    最近在做跨系统的数据交互业务,从.Net的系统提交数据到Java的系统. 简单的表单Get.POST都没问题,但是有个功能是要提交普通文本和文件,试了好多都有问题,最后用HttpClient小折腾了一 ...

  6. 设计模式C#实现(七)——生成器模式

    生成器模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. UML类图: 构成: 1.Builder(接口/抽象类)定义了创建一个产品Product的各个部件的方法,返回创 ...

  7. 续Gulp使用入门-综合运用>使用Gulp构建一个项目

    这是我的文件目录结构图  下面是我gulpfile.js的配置 'use strict' var gulp=require('gulp'); var gutil=require('gulp-util' ...

  8. javascript 动态改变onclick事件

    第一种:button.onclick = Function("alert('hello');"); 第二种:button.onclick = function(){alert(&q ...

  9. six month dormancy test

    source data: accountleg    year_month    amount acc1A    2010-01    100 acc1A    2010-02    100 acc1 ...

  10. uva 839 Not so Mobile-S.B.S.

    Before being an ubiquous communications gadget, a mobilewas just a structure made of strings and wir ...