【问题】

用如下的步骤应用了Log4Net:

  1. 建立了一个公用的项目, 在里面引入了Log4net的Nuget package.
  2. 在公用的项目中建立了一个类,加上了Log4net的attribute.

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

namespace MyNamespace.Common

{

public
class
LogHelper

{

static LogHelper()

{

var logCfg = new
FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");

XmlConfigurator.ConfigureAndWatch(logCfg);

}

public
static
void WriteError(Type t, Exception ex)

{

log4net.ILog log = log4net.LogManager.GetLogger(t);

log.Error("", ex);

}

 

public
static
void WriteLog(Type t, string msg)

{

log4net.ILog log = log4net.LogManager.GetLogger(t);

//log.Info(msg + "\r\n");

log.Info(msg);

}

 

 

}

}

 

  1. 建立了一个新项目,然后引用这个公用项目。
  2. 在这个新项目中加入了log4net.config文件。

<?xml
version="1.0"
encoding="utf-8" ?>

<configuration>

<configSections>

<section
name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

</configSections>

 

<log4net>

<appender
name="RollingLogFileAppender"
type="log4net.Appender.RollingFileAppender">

<!--日志路径-->

<param
name= "File"
value= "Log/"/>

<!--是否是向文件中追加日志-->

<param
name= "AppendToFile"
value= "true"/>

<!--log保留天数-->

<param
name= "MaxSizeRollBackups"
value= "10"/>

<!--日志文件名是否是固定不变的-->

<param
name= "StaticLogFileName"
value= "false"/>

<!--日志文件名格式为:2008-08-31.log-->

<param
name= "DatePattern"
value= "yyyy-MM-dd&quot;.log&quot;"/>

<!--日志根据日期滚动-->

<param
name= "RollingStyle"
value= "Date"/>

<layout
type="log4net.Layout.PatternLayout">

<param
name="ConversionPattern"
value="%n%date{HH:mm:ss,fff} [%-5level] %m" />

</layout>

</appender>

 

<!--
控制台前台显示日志
-->

<appender
name="ColoredConsoleAppender"
type="log4net.Appender.ColoredConsoleAppender">

<mapping>

<level
value="ERROR" />

<foreColor
value="Red, HighIntensity" />

</mapping>

<mapping>

<level
value="Info" />

<foreColor
value="Green" />

</mapping>

<layout
type="log4net.Layout.PatternLayout">

<conversionPattern
value="%n%date{HH:mm:ss,fff} [%-5level] %m" />

</layout>

 

<filter
type="log4net.Filter.LevelRangeFilter">

<param
name="LevelMin"
value="Info" />

<param
name="LevelMax"
value="Fatal" />

</filter>

</appender>

 

<root>

<!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->

<level
value="all" />

<!--<appender-ref ref="ColoredConsoleAppender"/>-->

<appender-ref
ref="RollingLogFileAppender"/>

</root>

</log4net>

</configuration>

 

  1. 在新项目的文件中记Log.

LogHelper.WriteLog(typeof(MyClass), "here");

 

进行了上述的步骤后,程序运行的时候,并没有 Log产生。

【分析】

调试了一下,发现在实际运行的时候,Loger各个级别的输出都成false了。

这是怎么回事那?

 

最后发现程序输出路径下并没有log4net.config,这样的结果就是log4net无法找到配置文件,所以就默认都禁止输出了。

 

【解决方法】

在程序中将log4net.config设置为总是拷贝到输出目录。

这样,每次编译的时候,log4net.config就会被拷贝到程序的输出目录。

再运行程序的时候,就有log产生了。

Log4net的不能产生Log文件的问题的更多相关文章

  1. log4net 使用与配置 每天一份log文件

    1.下载 或 在nuget安装 log4net 2. web.config (app.config) <configuration> <configSections> < ...

  2. C#中使用Log4net日志输出到本地文件、Textbox或Listview

    网上很多配置log4net的方法,但是排行靠前的 根本就没有说明清除,导致浪费了两个小时来搞清楚如何配置,真是无语,特写此文,给那些刚接触log4net的朋友 1.参考链接:http://blog.s ...

  3. log4net的分类型输出文件的配置

    <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSe ...

  4. log4net生成多个日志文件

    使用Log4Net日志组件时,经常会碰到这样一种场景,我想把错误的日志记录在Error.log文件中,而把操作的日志放在Operation.log文件中 经过几番尝试,终于实现了,在此把Log4Net ...

  5. IISExpress Log 文件路径

    问题 用VS做开发时经常用IISExpress测试web程序,那么在测试过程中生成的Log文件放在哪里了? 答案 情况1 默认情况下 applicationhost.config 文中定义了连个日志文 ...

  6. SQLServer2005删除log文件和清空日志的方案

    数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间.SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作.可以通过直接删除log文件和清空日 ...

  7. 转 listener.log文件过大导致oracle数据库连接非常慢

    数据库(31)  最近发现oracle数据库连接非常慢,sqlplus很快,用客户端就很慢,甚至会无响应. 然后服务器内存一下就飙升到了90%,不是表空间占满了,也不是数据库连接数占满了.重启还是一样 ...

  8. sql2008r 收缩数据库日志log文件;删除errorlog文件的方法

    1.清空log文件,以减少数据库文件log所占的空间 USE dbname1 ; GO ALTER DATABASE dbname1 SET RECOVERY SIMPLE;--设置简单恢复模式 GO ...

  9. 关于一次oracle sqlplus可登陆,但监听起不来的解决。由于listener.log文件超过4G

    1.在oracle服务器上cmd 执行 lsnrctl 执行start 过了好久,提示监听程序已经启动. 再执行status 过来好久,才提示命令执行成功. 最后找到原因是因为C:\Oracle\di ...

随机推荐

  1. WCID Devices -- Windows Compatible ID Devices

    WCID Devices What is WCID? A WCID device, where WCID stands for "Windows Compatible ID", i ...

  2. [Node.js]操作mysql

    摘要 上篇文章介绍了node.js操作redis的简单实例,这里介绍如何操作mysql. 安装 安装mysql模块 cnpm install mysql 一个例子 新建一个mysql.js的文件,代码 ...

  3. 在ASP.NET MVC下有关上传图片脏数据的解决方案

    在"在ASP.NET MVC下实现单个图片上传, 客户端服务端双重限制图片大小和格式, 服务端裁剪图片"中,已经实现了在客户端和服务端限制图片大小和格式,以及在服务端裁剪图片.但还 ...

  4. Delphi处理Android的路径信息

    路径操作就使用TPath的方法都很方便.usesSystem.IoUtilsTPath.GetTempPath//临时目录TPath.GetCameraPath//照相机目录(照片/录像)TPath. ...

  5. android模拟器修改时间

        我们看右上角的模拟器的时间,是不是和我们现在时间不同步呢   点击主菜单之后,我们找到下边的设置的按钮   下边找到时间和日期, 怎么把页面修改中文, 可以看(安卓模拟器怎么修改语言)的经验 ...

  6. 权力的游戏第一季/全集Game of Thrones迅雷下载

    <权力的游戏>是一部中世纪史诗奇幻题材的电视连续剧,该剧以美国作家乔治·R·R·马丁的奇幻巨作<冰与火之歌>七部曲为基础改编创作. 故事背景中虚构的世界,分为两片大陆:位于西面 ...

  7. Objective-C 入门笔记

    简介 建立在C语言之上,可以混编C/C++代码,编写一个类需要二个文件: .h的头文件 .m的实现文件(如果是C/C++混编文件,文件后缀为.mm) 既然有头文件,所以很多人会拿它与C++进行类比,它 ...

  8. putty adb

    putty.exe -adb -P 5037 transport-usb 网络调试也是可以的 先connect 再执行上面的命令 http://files.cnblogs.com/files/ahuo ...

  9. 用开源项目cropper实现对图片中任意部分进行裁剪

     红色区域为截图控件的区域.    开源项目地址:https://github.com/edmodo/cropper croper这个开源项目可以对一个图片进行任意区域的街区,并且可以设置图片的旋转角 ...

  10. 转帖:向开源项目贡献源码(以 Orchard 为例)

    原文地址:http://yangw80.blog.163.com/blog/static/247518002201552692516908/ 在开源项目满天飞的时代,仅仅把开源项目拿来用是不够的,要适 ...