【问题】

用如下的步骤应用了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. [Deepin 15] 安装 Java 8、Git、Firefox、SafeEyes(定时提醒休息工具)

    一.安装 JDK 8 1.到官网,用 迅雷下载 安装包 (jdk-8u131-linux-x64.tar.gz) 2.解压放到目录 /opt/software/jdk 3.配置环境变量 sudo vi ...

  2. fritshoogland 大神ORACLE :pga-memory-operation latch

    https://fritshoogland.wordpress.com/2017/03/01/oracle-12-2-wait-event-pga-memory-operation/#comment- ...

  3. 在TQ2440上运行perf,生成Flame Graph

    参考 http://www.cnblogs.com/helloworldtoyou/p/5585152.html  http://blog.csdn.net/mtofum/article/detail ...

  4. Android 模拟器设置

    这几个图标你应该是没有见过的,我来简单为你介绍下.最左边的图标其实你已经比较熟悉了,就是你睡觉前使用过的Android SDK管理器,点击它和点击SDK Manager效果是一样的.中间的图标是用来开 ...

  5. Java进程线程理解

    一个进程包括由操作系统分配的内存空间,包含一个或多个线程.一个线程不能独立的存在,它必须是进程的一部分.一个进程一直运行,直到所有的非守护线程都结束运行后才能结束. 多线程能满足程序员编写高效率的程序 ...

  6. Informix 常用函数

    一.内部函数 1.内部合计函数 1)COUNT(*) 返回行数 2)COUNT(DISTINCT COLNAME) 返回指定列中唯一值的个数 3)SUM(COLNAME/EXPRESSION) 返回指 ...

  7. android studio build.gradle中 project.ANDROID_BUILD_SDK_VERSION

    1.メニューの [File] -> [Import Module]2.Source directory に先ほど解凍したディレクトリを指定3.「facebook」 を選択した状態に Finish ...

  8. 设计模式之代理模式之二(Proxy)

    from://http://www.cnblogs.com/xwdreamer/archive/2012/05/23/2515306.html 设计模式之代理模式之二(Proxy)   0.前言 在前 ...

  9. 关于unity里pbr技术和材质 unity5默认shader和传统的对比

    刚开始也不知道什么是pbr (Physically Based Rendering)后来才发现这是一种新的渲染方式 与之对应的是材质是pbs(Physically Based Shader) unit ...

  10. SharePoint Online 切换经典视图

    SharePoint online 默认是现代视图,我们可以通过Powershell命令切换默认视图. 以下,是完成的Powershell命令: # This file uses CSOM. Repl ...