本文转自:http://www.cnblogs.com/weiweictgu/p/5848805.html

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下面

 1 <?xml version="1.0" encoding="utf-8" ?>
2 <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
5 autoReload="true"
6 throwExceptions="false"
7 internalLogLevel="Off" internalLogFile="F:\temp\20160907\NLog\log\nlog-internal.log">
8
9 <!-- optional, add some variables
10 https://github.com/nlog/NLog/wiki/Configuration-file#variables
11 -->
12 <variable name="myvar" value="myvalue"/>
13
14 <!--
15 See https://github.com/nlog/nlog/wiki/Configuration-file
16 for information on customizing logging rules and outputs.
17 -->
18 <targets>
19
20 <!--
21 add your targets here
22 See https://github.com/nlog/NLog/wiki/Targets for possible targets.
23 See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
24 -->
25
26 <!--
27 Write events to a file with the date in the filename.
28 <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
29 layout="${longdate} ${uppercase:${level}} ${message}" />
30 -->
31 <target name="logfile" xsi:type="File" fileName="${basedir}/logs/${shortdate}.log" />
32 <target name="console" xsi:type="ColoredConsole" />
33 </targets>
34
35 <rules>
36 <!-- add your logging rules here -->
37
38 <!--
39 Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
40 <logger name="*" minlevel="Debug" writeTo="f" />
41 -->
42 <logger name="*" minlevel="Debug" writeTo="logfile" />
43 <logger name="*" minlevel="Info" writeTo="console" />
44 </rules>
45 </nlog>

调用代码:

 1   Logger logger = LogManager.GetCurrentClassLogger();
2
3
4 logger.Trace("Sample trace message");
5 logger.Debug("Sample debug message");
6 logger.Info("Sample informational message");
7 logger.Warn("Sample warning message");
8 logger.Error("Sample error message");
9 logger.Fatal("Sample fatal error message");
10
11
12 logger.Info("wilson测试 日志日期:{0}", DateTime.Now);

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

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

Install-Package NLog.Web

配置文件如下

 1 <?xml version="1.0" encoding="utf-8" ?>
2 <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
5 autoReload="true"
6 throwExceptions="false"
7 internalLogLevel="Off" internalLogFile="F:\temp\20160907\NLog\log\nlog-internal.log">
8
9 <!-- optional, add some variables
10 https://github.com/nlog/NLog/wiki/Configuration-file#variables
11 -->
12 <variable name="myvar" value="myvalue"/>
13
14 <!--
15 See https://github.com/nlog/nlog/wiki/Configuration-file
16 for information on customizing logging rules and outputs.
17 -->
18 <targets>
19
20 <!--
21 add your targets here
22 See https://github.com/nlog/NLog/wiki/Targets for possible targets.
23 See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
24 -->
25
26 <!--
27 Write events to a file with the date in the filename.
28 <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
29 layout="${longdate} ${uppercase:${level}} ${message}" />
30 -->
31 <target name="logfile" xsi:type="File" fileName="${basedir}/logs/${shortdate}.log" />
32 <target name="console" xsi:type="ColoredConsole" />
33
34 <target name="db"
35 xsi:type="Database"
36 connectionStringName="NLogConn"
37 commandType="StoredProcedure"
38 commandText="[dbo].[NLog_AddEntry_p]"
39 >
40 <parameter name="@machineName" layout="${machinename}" />
41 <parameter name="@siteName" layout="${iis-site-name}" />
42 <parameter name="@logged" layout="${date}" />
43 <parameter name="@level" layout="${level}" />
44 <parameter name="@username" layout="${aspnet-user-identity}" />
45 <parameter name="@message" layout="${message}" />
46 <parameter name="@logger" layout="${logger}" />
47 <parameter name="@properties" layout="${all-event-properties:separator=|}" />
48 <parameter name="@serverName" layout="${aspnet-request:serverVariable=SERVER_NAME}" />
49 <parameter name="@port" layout="${aspnet-request:serverVariable=SERVER_PORT}" />
50 <parameter name="@url" layout="${aspnet-request:serverVariable=HTTP_URL}" />
51 <parameter name="@https" layout="${when:inner=1:when='${aspnet-request:serverVariable=HTTPS}' == 'on'}${when:inner=0:when='${aspnet-request:serverVariable=HTTPS}' != 'on'}" />
52 <parameter name="@serverAddress" layout="${aspnet-request:serverVariable=LOCAL_ADDR}" />
53 <parameter name="@remoteAddress" layout="${aspnet-request:serverVariable=REMOTE_ADDR}:${aspnet-request:serverVariable=REMOTE_PORT}" />
54 <parameter name="@callSite" layout="${callsite}" />
55 <parameter name="@exception" layout="${exception:tostring}" />
56 </target>
57
58
59 </targets>
60
61 <rules>
62 <!-- add your logging rules here -->
63
64 <!--
65 Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
66 <logger name="*" minlevel="Debug" writeTo="f" />
67 -->
68 <logger name="*" minlevel="Debug" writeTo="logfile" />
69 <logger name="*" minlevel="Info" writeTo="console" />
70
71 <logger name="*" minlevel="Debug" writeTo="db" />
72 </rules>
73 </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以上已经抛弃

 1 <targets>
2 <target name="oraclelog" type="Database">
3
4 <dbProvider>System.Data.OracleClient.OracleConnection,System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</dbProvider>
5
6 <connectionString>Data Source=JMDB_215;User ID=TYUM_UM; Password=DEV_TYUM_UM;</connectionString>
7
8 <commandText>insert into RS_LOGTABLE (log_user,log_level,log_date,log_message) values(:log_user,:log_level,:log_date,:log_message)</commandText>
9
10 <parameter name=":log_user" layout="${aspnet-user-identity}"/>
11 <parameter name=":log_level" layout="${level}"/>
12 <parameter name=":log_date" layout="${date}"/>
13 <parameter name=":log_message" layout="${message}"/>
14
15 </target>
16 </targets>
17 <rules>
18 <logger name="*" minlevel="Debug" writeTo="oraclelog" />
19 </rules>

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

 1     <targets>
2 <target name="oraclelog" type="Database">
3
4 <!--<dbProvider>Oracle.ManagedDataAccess.Client,Oracle.ManagedDataAccess</dbProvider>-->
5 <dbProvider>Oracle.DataAccess.Client.OracleConnection,Oracle.DataAccess</dbProvider>
6 <connectionString>Data Source=orcl;User ID=oracle_user; Password=password;</connectionString>
7
8 <commandText>insert into RS_LOGTABLE (log_user,log_level,log_date,log_message) values(:log_user,:log_level,:log_date,:log_message)</commandText>
9
10 <parameter name=":log_user" layout="${machinename}"/>
11 <parameter name=":log_level" layout="${level}"/>
12 <parameter name=":log_date" layout="${date}"/>
13 <parameter name=":log_message" layout="${message}"/>
14
15 </target>
16 </targets>
17
18 <rules>
19 <logger name="oracleDbLog" minlevel="Debug" writeTo="oraclelog" />
20 </rules>

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,配置文件如下:

 1 <targets>
2 <target name="MySQLLog" type="Database">
3 <dbProvider>MySql.Data.MySqlClient.MySqlConnection,MySql.Data</dbProvider>
4 <connectionString>Server=192.168.0.2;Uid=root;Pwd=root;Database=mydb;</connectionString>
5
6 <commandText>insert into t_nlog (log_user,log_level,log_date,log_message) values(@log_user,@log_level,@log_date,@log_message)</commandText>
7
8 <parameter name="@log_user" layout="${machinename}"/>
9 <parameter name="@log_level" layout="${level}"/>
10 <parameter name="@log_date" layout="${date}"/>
11 <parameter name="@log_message" layout="${message}"/>
12 </target>
13 </targets>
14
15 <rules>
16 <logger name="*" minlevel="Debug" writeTo="MySQLLog" />
17 </rules>

执行结果:

文件日志异常模板:

      <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 配置文件:
 1  <extensions>
2 <add assembly="NLog.Mongo"/>
3 </extensions>
4
5 <target xsi:type="Mongo"
6 name="mongoDefault"
7 connectionString="mongodb://192.168.0.226:6111/NLogging"
8 collectionName="DefaultLog"
9 cappedCollectionSize="26214400">
10 <property name="ThreadID" layout="${threadid}" bsonType="Int32" />
11 <property name="ThreadName" layout="${threadname}" />
12 <property name="ProcessID" layout="${processid}" bsonType="Int32" />
13 <property name="ProcessName" layout="${processname:fullName=true}" />
14 <property name="UserName" layout="${windows-identity}" />
15 </target>
16
17 <rules>
18
19 <logger name="*" level="Debug" writeTo="mongoDefault" />
20 </rules>

执行结果如下:

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

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

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

    1.升级到log4net的最新版 PM下执行 Install-Package log4net 还是无法解决的,使用下面的方法 2.使用Nlog替换之,详见https://github.com/NLog ...

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

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

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

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

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

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

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

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

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

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

  7. 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法

    前言 在搭建大数据Hadoop相关的环境时候,遇到很多了很多错误.我是个喜欢做笔记的人,这些错误基本都记载,并且将解决办法也写上了.因此写成博客,希望能够帮助那些搭建大数据环境的人解决问题. 说明: ...

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

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

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

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

随机推荐

  1. 使用Emit实现给实体赋值

    Dapper.net的速度很快,最近看源码,原来他orm的实现是通过编写大量IL代码实现的. 使用DynamicMethod,自己编织一个给实体赋值的方法.这种写法效率很高,接近直接对属性赋值.比使用 ...

  2. 关于类属性值校验的一点记录 【知识点Attribute】

    好久没有进来了,之前励志坚持写博客,记录自己在做代码搬运工这段历程中点滴,可是仅仅只坚持了几天,就放弃了!果然是,世上无难事,只要肯放弃!哈哈……闲话不多说,开始进入正题,给自己留点笔记,避免将来老了 ...

  3. WPF绑定BitMapImage

    先说下图片文件存在服务器.wpf常用绑定图片地址没办法用.忽然想到,convert能否转字节数据?实验了下可以. 图片绑定字节数组. convert代码 public class PictureCon ...

  4. pageadmin CMS 如何添加自定义页面

    理论上网站上的所有页面都可以通过栏目管理来添加,那自定义页面的意义是什么呢? 网站的需求是很多样化的,比如需要制作一个对外提供数据的api,甚至制作一个搜索页面,或者制作一些数据和栏目没有对应关系的页 ...

  5. java学习笔记—EL表达式(38)

    EL表达式 EL即Expression Language,主要的任务是帮助开发者简化获取域属性. 但是一般情况下需要使用EL和JSTL结合使用. 语法: ${ // 隐含对象|直接写域中的属性 }  ...

  6. lamp-linux2

    LAMP编程之Linux(2) 一.进阶指令 1.du指令 作用:du表示directory used,显示出目录所占的磁盘空间大小的情况. 语法:#du -sh 目录路径 选项说明: -s:表示su ...

  7. [转载] cassandra Unable to complete request: one or more nodes were unavailable

    今天碰到的问题跟这个一模一样,特地转过来记录一下 https://support.datastax.com/hc/en-us/articles/204893189-CQL-query-results- ...

  8. php脚本cli 模式运行

    参考文章 http://rapheal.sinaapp.com/2013/11/20/php_zend_hello_world/ http://www.douban.com/note/33788568 ...

  9. 队列的理解和实现(一) ----- 循环队列(java实现)

    什么是队列 我们都知道栈是先进后出的一种线性表,与之相反的是,队列是一种先进先出的线性表.它只允许在表的一端进行插入,而在另一端进行删除.举个例子来说,在生活中我们买东西需要进行排队,最先排队的可以最 ...

  10. [转] HBase异常:hbase-default.xml file seems to be for an old version of HBase

    [From] https://blog.yoodb.com/yoodb/article/detail/157 使用HBase Java Client连接HBase服务端创建Configuration对 ...