1、升级到log4net的最新版

PM下执行

Install-Package log4net

还是无法解决的,使用下面的方法

2、使用Nlog替换之,详见https://github.com/NLog/NLog/wiki/Tutorial

安装

Install-Package NLog.Config 

NLog使用方法比log4net更为简单,配置文件如下,如果成windows程序需将NLog.config自动复制到bin下面

 <?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="F:\temp\20160907\NLog\log\nlog-internal.log"> <!-- optional, add some variables
https://github.com/nlog/NLog/wiki/Configuration-file#variables
-->
<variable name="myvar" value="myvalue"/> <!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
-->
<targets> <!--
add your targets here
See https://github.com/nlog/NLog/wiki/Targets for possible targets.
See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
--> <!--
Write events to a file with the date in the filename.
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
-->
<target name="logfile" xsi:type="File" fileName="${basedir}/logs/${shortdate}.log" />
<target name="console" xsi:type="ColoredConsole" />
</targets> <rules>
<!-- add your logging rules here --> <!--
Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
<logger name="*" minlevel="Debug" writeTo="f" />
-->
<logger name="*" minlevel="Debug" writeTo="logfile" />
<logger name="*" minlevel="Info" writeTo="console" />
</rules>
</nlog>

NLog.config

调用代码:

   Logger logger = LogManager.GetCurrentClassLogger();

             logger.Trace("Sample trace message");
logger.Debug("Sample debug message");
logger.Info("Sample informational message");
logger.Warn("Sample warning message");
logger.Error("Sample error message");
logger.Fatal("Sample fatal error message"); logger.Info("wilson测试 日志日期:{0}", DateTime.Now);

执行结果,非常漂亮的控制台输出:

web站点配置log写入到sql server数据库,需要安装NLog.Web

Install-Package NLog.Web

配置文件如下

 <?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="F:\temp\20160907\NLog\log\nlog-internal.log"> <!-- optional, add some variables
https://github.com/nlog/NLog/wiki/Configuration-file#variables
-->
<variable name="myvar" value="myvalue"/> <!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
-->
<targets> <!--
add your targets here
See https://github.com/nlog/NLog/wiki/Targets for possible targets.
See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
--> <!--
Write events to a file with the date in the filename.
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
-->
<target name="logfile" xsi:type="File" fileName="${basedir}/logs/${shortdate}.log" />
<target name="console" xsi:type="ColoredConsole" /> <target name="db"
xsi:type="Database"
connectionStringName="NLogConn"
commandType="StoredProcedure"
commandText="[dbo].[NLog_AddEntry_p]"
>
<parameter name="@machineName" layout="${machinename}" />
<parameter name="@siteName" layout="${iis-site-name}" />
<parameter name="@logged" layout="${date}" />
<parameter name="@level" layout="${level}" />
<parameter name="@username" layout="${aspnet-user-identity}" />
<parameter name="@message" layout="${message}" />
<parameter name="@logger" layout="${logger}" />
<parameter name="@properties" layout="${all-event-properties:separator=|}" />
<parameter name="@serverName" layout="${aspnet-request:serverVariable=SERVER_NAME}" />
<parameter name="@port" layout="${aspnet-request:serverVariable=SERVER_PORT}" />
<parameter name="@url" layout="${aspnet-request:serverVariable=HTTP_URL}" />
<parameter name="@https" layout="${when:inner=1:when='${aspnet-request:serverVariable=HTTPS}' == 'on'}${when:inner=0:when='${aspnet-request:serverVariable=HTTPS}' != 'on'}" />
<parameter name="@serverAddress" layout="${aspnet-request:serverVariable=LOCAL_ADDR}" />
<parameter name="@remoteAddress" layout="${aspnet-request:serverVariable=REMOTE_ADDR}:${aspnet-request:serverVariable=REMOTE_PORT}" />
<parameter name="@callSite" layout="${callsite}" />
<parameter name="@exception" layout="${exception:tostring}" />
</target> </targets> <rules>
<!-- add your logging rules here --> <!--
Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
<logger name="*" minlevel="Debug" writeTo="f" />
-->
<logger name="*" minlevel="Debug" writeTo="logfile" />
<logger name="*" minlevel="Info" writeTo="console" /> <logger name="*" minlevel="Debug" writeTo="db" />
</rules>
</nlog>

Web NLog配置

Web.Config要加上对应数据库连接

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

<!--
有关如何配置 ASP.NET 应用程序的详细信息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
--> <configuration>
<connectionStrings>
<add name="NLogConn" connectionString="Server=.;uid=sa;pwd=sa;Database=db;"/>
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web> </configuration>

保存数据库结果:

写入oracle的配置,使用System.Data.OracleClient,.net 4.0以上已经抛弃

 <targets>
<target name="oraclelog" type="Database"> <dbProvider>System.Data.OracleClient.OracleConnection,System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</dbProvider> <connectionString>Data Source=JMDB_215;User ID=TYUM_UM; Password=DEV_TYUM_UM;</connectionString> <commandText>insert into RS_LOGTABLE (log_user,log_level,log_date,log_message) values(:log_user,:log_level,:log_date,:log_message)</commandText> <parameter name=":log_user" layout="${aspnet-user-identity}"/>
<parameter name=":log_level" layout="${level}"/>
<parameter name=":log_date" layout="${date}"/>
<parameter name=":log_message" layout="${message}"/> </target>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="oraclelog" />
</rules>

写入oracle的配置,使用Oracle.DataAccess.Client,配置文件如下:

     <targets>
<target name="oraclelog" type="Database"> <!--<dbProvider>Oracle.ManagedDataAccess.Client,Oracle.ManagedDataAccess</dbProvider>-->
<dbProvider>Oracle.DataAccess.Client.OracleConnection,Oracle.DataAccess</dbProvider>
<connectionString>Data Source=orcl;User ID=oracle_user; Password=password;</connectionString> <commandText>insert into RS_LOGTABLE (log_user,log_level,log_date,log_message) values(:log_user,:log_level,:log_date,:log_message)</commandText> <parameter name=":log_user" layout="${machinename}"/>
<parameter name=":log_level" layout="${level}"/>
<parameter name=":log_date" layout="${date}"/>
<parameter name=":log_message" layout="${message}"/> </target>
</targets> <rules>
<logger name="oracleDbLog" minlevel="Debug" writeTo="oraclelog" />
</rules>

Oracle.DataAccess.Client Log配置

C#调用代码:

   Logger oracleLogger = LogManager.GetLogger("oracleDbLog");

            oracleLogger.Error(new Exception("自定义异常oracle"), "错误信息 oracledb", string.Empty);

执行结果:

写入Mysql,需应用MySql.Data程序集,安装Install-Package MySql.Data -Version 6.9.9,配置文件如下:

 <targets>
<target name="MySQLLog" type="Database">
<dbProvider>MySql.Data.MySqlClient.MySqlConnection,MySql.Data</dbProvider>
<connectionString>Server=192.168.0.2;Uid=root;Pwd=root;Database=mydb;</connectionString> <commandText>insert into t_nlog (log_user,log_level,log_date,log_message) values(@log_user,@log_level,@log_date,@log_message)</commandText> <parameter name="@log_user" layout="${machinename}"/>
<parameter name="@log_level" layout="${level}"/>
<parameter name="@log_date" layout="${date}"/>
<parameter name="@log_message" layout="${message}"/>
</target>
</targets> <rules>
<logger name="*" minlevel="Debug" writeTo="MySQLLog" />
</rules>

NLog Mysql

执行结果:

文件日志异常模板:

      <target name="logfile" xsi:type="File" fileName="${basedir}/nlogs/${shortdate}.log"  layout="${longdate}|${level}||${logger} ${message}| ${exception:format=tostring}" />

NLog日志写入到MongoDB,安装NLog.Mongo

PM> Install-Package NLog.Mongo
配置文件:
  <extensions>
<add assembly="NLog.Mongo"/>
</extensions> <target xsi:type="Mongo"
name="mongoDefault"
connectionString="mongodb://192.168.0.226:6111/NLogging"
collectionName="DefaultLog"
cappedCollectionSize="26214400">
<property name="ThreadID" layout="${threadid}" bsonType="Int32" />
<property name="ThreadName" layout="${threadname}" />
<property name="ProcessID" layout="${processid}" bsonType="Int32" />
<property name="ProcessName" layout="${processname:fullName=true}" />
<property name="UserName" layout="${windows-identity}" />
</target> <rules> <logger name="*" level="Debug" writeTo="mongoDefault" />
</rules>

NLog.config

执行结果如下:

参考:https://github.com/loresoft/NLog.Mongo

												

log4net 发布到生产环境不写日志的解决方法--使用 NLog日志的更多相关文章

  1. [转]log4net 发布到生产环境不写日志的解决方法--使用 NLog日志

    本文转自:http://www.cnblogs.com/weiweictgu/p/5848805.html 1.升级到log4net的最新版 PM下执行 Install-Package log4net ...

  2. Asp.Net 应用程序在IIS发布后无法连接oracle数据库问题的解决方法

    asp.net程序编写完成后,发布到IIS,经常出现的一个问题是连接不上Oracle数据库,具体表现为Oracle的本地NET服务配置成功:用 pl/sql 等工具也可以连接上数据库,但是通过浏览器中 ...

  3. 多测师讲解自动化测试_rf运行无日志(解决方法)_高级讲肖sir

    rf运行无日志(解决方法) 出现现象: 方法: 1.先在套件里面导入OperatingSystem库 2.在套件中新建一个关键字套件点击右键选择new user keyword关键 字的名称为:kil ...

  4. 利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境

    一.环境描述 安装有ansible的服务器:192.168.13.45 测试环境服务器:192.168.13.49 /home/app/api-tomcat/webapps/api.war为测试环境新 ...

  5. ORA-00257归档日志写满的解决方法

    背景: 在前一篇博客中我们提到了如何启动或关闭oracle的归档(ARCHIVELOG)模式,在我成功设定数据库为归档模式以后, 第二天再次尝试连接数据库,报错:ORA-00257.在网上找到了一圈资 ...

  6. (转)ORA-00257归档日志写满的解决方法

    转自:http://www.cnblogs.com/xwdreamer/p/3804509.html 背景: 在前一篇博客中我们提到了如何启动或关闭oracle的归档(ARCHIVELOG)模式,在我 ...

  7. Vue 生产环境(production) 打开 调试工具的方法

    总所周知,在production生产环境下,点击vue插件会显示, 并且按F12是没办法使用调试工具的,这样非常不方便 其实是有一个办法的,那就是复制下面的js,然后在控制台执行 代码中已经写清楚执行 ...

  8. oracle归档日志写满错误解决方法

    最近一年,手头上负责的项目要部署到很多个地方,由于项目组里没有人对oracle比较熟悉,只能给自己增加一个DBA的角色了.由于短时间内要部署很多单位,备份策略没有设置好,结果过了一个月,用户报告程序开 ...

  9. 修改vue的配置项支持生产环境下二级目录访问的方法

    本文主要记录如何配置vue的打包文件配置项,使打包后的文件可以支持二级目录的访问. 1.常规打包 在实际的项目中,我们通常都使用 npm run build 直接打包文件后丢到服务器上访问 打包后的文 ...

随机推荐

  1. Shannon entropy

    Shannon entropy is one of the most important metrics in information theory. Entropy measures the unc ...

  2. cocos2d-x 的两大基类

    cocos2d-x 有两个重要的基类,一个管理引用计数的 Ref,别一个则定义许多基本属性的 Node. 在 cocos2d-x 中的基本概念 说到 create 函数的时候提到 cocos2d-x ...

  3. eval解析非标准json

    以前一直在用,但是不知道原理,惭愧啊,今天把自己想法加上. eval("{a:1}"); eval("{a:,b:1}"); 第一眼的感觉是都会得到一个对象,其 ...

  4. 网站优化之Asp.Net篇<一>

    一>禁用viewstate. 二>禁用动态编译.访问一个Aspx文件时 会编译为一个新的类放在C盘Asp.net临时文件夹下.下次请求不会再编译,会把先前的编译结果返回. 任何对Asp.n ...

  5. windows 7 下找不到 Chart控件问题

    1.网上下载 Microsoft Chart Control, version 6.0 插件 2.注册.由于windows 7 的权限问题注册会失败,因为注册控件需要管理员的权限,在开始菜单的附件下面 ...

  6. Ubuntu中添加eclipse

    环境:Ubuntu 14.04 步骤: 1.安装配置JDK,详见 http://my.oschina.net/u/1407116/blog/227084 2.下载eclipse 从官网http://w ...

  7. Zyxel Switch-How to block a fake DHCP server without enabling DHCP snooping?

    How to block a fake DHCP server without enabling DHCP snooping? Scenario How to block a fake DHCP se ...

  8. Windows和Unix下的编码问题

    今天测试shell脚本时,执行报错: ./report.sh: /tmp/tmp.E8ekx6r5Qq/report.sh: /bin/bash^M: bad interpreter: No such ...

  9. overflow 清除浮动

    对overflow的理解还停留在“规定当内容溢出元素框时发生的事情”,这种简单的认识上,今天发现overflow还可以清除浮动. <style> .outside{ height:auto ...

  10. [转]使用 C 编写 Lua 模块

    Lua 作为一种小巧的语言,一般都是嵌入到 C/C++ 中作为扩展语言,但是也可以作为独立的脚本语言使用,并且可以使用 C/C++ 编写扩展模块.在参考资料 [1] 中有怎样用 C/C++ 编写模块的 ...