使用Log4Net - 文件日志 和 SqlServer日志 客官°小女子只卖身不卖艺 2022-07-12 12:00 159阅读 0赞 http://blog.csdn.net/csethcrm/article/details/52858683 [使用Log4Net - 文件日志 ][Log4Net -] [使用Log4Net - 文件日志 和 SqlServer日志][Log4Net - _ _ SqlServer] [ 使用Log4Net - 文件日志 和 Oracle日志][Log4Net - _ _ Oracle] Log4Net.config 配置文件: **\[html\]** [view plain][] [copy][view plain] [print][view plain] [?][view plain] [![在CODE上查看代码片][CODE]][CODE_CODE] [![派生到我的代码片][ico_fork.svg]][ico_fork.svg 1] 1. **<?****xml** version="1.0" encoding="utf-8" **?>** 2. **<****configuration****>** 3. 4. <!-- Register a section handler for the log4net section --> 5. **<****configSections****>** 6. **<****section** name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"**/>** 7. **</****configSections****>** 8. **<****log4net****>** 9. <!-- Define some output appenders --> 10. 11. <!--定义输出到文件中--> 12. **<****appender** name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"**>** 13. <!--定义文件存放位置--> 14. **<****file** value="log\\\\"**/>** 15. **<****appendToFile** value="true"**/>** 16. **<****rollingStyle** value="Date"**/>** 17. **<****datePattern** value="yyyyMM\\\\yyyyMMdd'.txt'"**/>** 18. **<****staticLogFileName** value="false"**/>** 19. **<****param** name="MaxSizeRollBackups" value="100"**/>** 20. **<****layout** type="log4net.Layout.PatternLayout"**>** 21. <!--<conversionPattern value="%date \[%thread\] %-5level %logger \[%ndc\] <%property\{auth\}> : %newline%message%newline%newline" />--> 22. **<****conversionPattern** value="==== %date \[%thread\] %-5level ==== : %newline%message%newline%newline" **/>** 23. **</****layout****>** 24. **</****appender****>** 25. 26. <!--Sql server Appender --> 27. **<****appender** name="AdoNetAppender\_SqlServer" type="log4net.Appender.ADONetAppender"**>** 28. <!--bufferSize 为缓冲区大小,只有日志记录超设定值才会一块写入到数据库 --> 29. <!-- 注意bufferSize 参数在测试环境建议设置为 0 ,在生产环境建议设置为100 --> 30. **<****bufferSize** value="0" **/>** 31. <!--访问数据库驱动的引用--> 32. **<****connectionType** value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" **/>** 33. <!--数据库连接字符串--> 34. **<****connectionString** value="server=.;database=Log4Net;uid=sa;password=123.com;"**/>** 35. <!--数据库执行的Sql语句--> 36. **<****commandText** value="INSERT INTO Log4Net (\[Date\],\[Thread\],\[Level\],\[Logger\],\[Message\],\[Exception\]) VALUES (@log\_date, @thread, @log\_level, @logger, @message, @exception)" **/>** 37. <!-- 日志记录时间,RawTimeStampLayout为默认的时间输出格式 --> 38. **<****parameter****>** 39. **<****parameterName** value="@log\_date" **/>** 40. **<****dbType** value="DateTime" **/>** 41. **<****layout** type="log4net.Layout.RawTimeStampLayout" **/>** 42. **</****parameter****>** 43. <!--线程号--> 44. **<****parameter****>** 45. **<****parameterName** value="@thread" **/>** 46. **<****dbType** value="String" **/>** 47. **<****size** value="255" **/>** 48. **<****layout** type="log4net.Layout.PatternLayout"**>** 49. **<****conversionPattern** value="%thread" **/>** 50. **</****layout****>** 51. **</****parameter****>** 52. <!--日志等级 级别从低到高分别是:debug(调试),info(信息),warn(警告),error(错误),fatal(致命错误)--> 53. **<****parameter****>** 54. **<****parameterName** value="@log\_level" **/>** 55. **<****dbType** value="String" **/>** 56. **<****size** value="50" **/>** 57. **<****layout** type="log4net.Layout.PatternLayout"**>** 58. **<****conversionPattern** value="%level" **/>** 59. **</****layout****>** 60. **</****parameter****>** 61. <!--产生日志的类--> 62. **<****parameter****>** 63. **<****parameterName** value="@logger" **/>** 64. **<****dbType** value="String" **/>** 65. **<****size** value="255" **/>** 66. **<****layout** type="log4net.Layout.PatternLayout"**>** 67. **<****conversionPattern** value="%logger" **/>** 68. **</****layout****>** 69. **</****parameter****>** 70. <!----> 71. **<****parameter****>** 72. **<****parameterName** value="@message" **/>** 73. **<****dbType** value="String" **/>** 74. **<****size** value="4000" **/>** 75. **<****layout** type="log4net.Layout.PatternLayout"**>** 76. **<****conversionPattern** value="%message" **/>** 77. **</****layout****>** 78. **</****parameter****>** 79. **<****parameter****>** 80. **<****parameterName** value="@exception" **/>** 81. **<****dbType** value="String" **/>** 82. **<****size** value="2000" **/>** 83. **<****layout** type="log4net.Layout.ExceptionLayout" **/>** 84. **</****parameter****>** 85. **</****appender****>** 86. 87. <!-- Setup the root category, add the appenders and set the default level --> 88. **<****root****>** 89. **<****level** value="ALL" **/>** 90. **<****appender-ref** ref="RollingLogFileAppender" **/>** 91. **<****appender-ref** ref="AdoNetAppender\_SqlServer" **/>** 92. **</****root****>** 93. 94. **</****log4net****>** 95. **</****configuration****>** Program.cs代码,如下: **\[csharp\]** [view plain][] [copy][view plain] [print][view plain] [?][view plain] [![在CODE上查看代码片][CODE]][CODE_CODE] [![派生到我的代码片][ico_fork.svg]][ico_fork.svg 1] 1. **using** log4net; 2. **using** System; 3. **using** System.Collections.Generic; 4. **using** System.Linq; 5. **using** System.Text; 6. **using** System.Threading.Tasks; 7. 8. \[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Content/Config/Log4Net.config", Watch = **true**)\] 9. **namespace** Com.No1.Log4Net.SqlServer 10. \{ 11. **class** Program 12. \{ 13. **protected** **static** **readonly** ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 14. **static** **void** Main(**string**\[\] args) 15. \{ 16. **for** (**int** i = 0; i < 101; i++) 17. \{ 18. logger.Debug("Test" + i); 19. \} 20. \} 21. \} 22. \} [数据库][Link 1]创建表脚本: **\[sql\]** [view plain][] [copy][view plain] [print][view plain] [?][view plain] [![在CODE上查看代码片][CODE]][CODE_CODE] [![派生到我的代码片][ico_fork.svg]][ico_fork.svg 1] 1. **CREATE** **TABLE** \[dbo\].\[Log4Net\]( 2. \[Id\] \[**bigint**\] IDENTITY(1,1) NOT NULL, 3. \[**Date**\] \[datetime2\](7) NULL, 4. \[Thread\] \[**varchar**\](255) NULL, 5. \[**Level**\] \[**varchar**\](255) NULL, 6. \[Logger\] \[**varchar**\](255) NULL, 7. \[Message\] \[**varchar**\](255) NULL, 8. \[Exception\] \[**varchar**\](255) NULL, 9. **CONSTRAINT** \[PK\_Log4Net\] **PRIMARY** **KEY** CLUSTERED 10. ( 11. \[Id\] **ASC** 12. )**WITH** (PAD\_INDEX = **OFF**, STATISTICS\_NORECOMPUTE = **OFF**, IGNORE\_DUP\_KEY = **OFF**, ALLOW\_ROW\_LOCKS = **ON**, ALLOW\_PAGE\_LOCKS = **ON**) **ON** \[**PRIMARY**\] 13. ) **ON** \[**PRIMARY**\] 14. 15. GO 结果,如下图: ![Center][] [测试][Link 2]时注意修改节点 : **connectionString **修改为 自己测试环境的连接字符串 注意点: <!--bufferSize 为缓冲区大小,只有日志记录超设定值才会一块写入到数据库 --> <!-- 注意bufferSize 参数在测试环境建议设置为 0 ,在生产环境建议设置为100 --> <bufferSize value="0" /> 如果测试环境设置成 100 ,则缓冲区 超过100条 消息才会 写入SqlServer库,这个很容易忘记,造成不必要的问题。测试环境 请设置成 0 [ ][Link 3] [测试代码,点击下载!][Link 3] [使用Log4Net - 文件日志 ][Log4Net -] [使用Log4Net - 文件日志 和 SqlServer日志][Log4Net - _ _ SqlServer] [ 使用Log4Net - 文件日志 和 Oracle日志][Log4Net - _ _ Oracle] [使用Log4Net - 文件日志 ][Log4Net -] [使用Log4Net - 文件日志 和 SqlServer日志][Log4Net - _ _ SqlServer] [ 使用Log4Net - 文件日志 和 Oracle日志][Log4Net - _ _ Oracle] Log4Net.config 配置文件: **\[html\]** [view plain][] [copy][view plain] [print][view plain] [?][view plain] [![在CODE上查看代码片][CODE]][CODE_CODE] [![派生到我的代码片][ico_fork.svg]][ico_fork.svg 1] 1. **<?****xml** version="1.0" encoding="utf-8" **?>** 2. **<****configuration****>** 3. 4. <!-- Register a section handler for the log4net section --> 5. **<****configSections****>** 6. **<****section** name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"**/>** 7. **</****configSections****>** 8. **<****log4net****>** 9. <!-- Define some output appenders --> 10. 11. <!--定义输出到文件中--> 12. **<****appender** name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"**>** 13. <!--定义文件存放位置--> 14. **<****file** value="log\\\\"**/>** 15. **<****appendToFile** value="true"**/>** 16. **<****rollingStyle** value="Date"**/>** 17. **<****datePattern** value="yyyyMM\\\\yyyyMMdd'.txt'"**/>** 18. **<****staticLogFileName** value="false"**/>** 19. **<****param** name="MaxSizeRollBackups" value="100"**/>** 20. **<****layout** type="log4net.Layout.PatternLayout"**>** 21. <!--<conversionPattern value="%date \[%thread\] %-5level %logger \[%ndc\] <%property\{auth\}> : %newline%message%newline%newline" />--> 22. **<****conversionPattern** value="==== %date \[%thread\] %-5level ==== : %newline%message%newline%newline" **/>** 23. **</****layout****>** 24. **</****appender****>** 25. 26. <!--Sql server Appender --> 27. **<****appender** name="AdoNetAppender\_SqlServer" type="log4net.Appender.ADONetAppender"**>** 28. <!--bufferSize 为缓冲区大小,只有日志记录超设定值才会一块写入到数据库 --> 29. <!-- 注意bufferSize 参数在测试环境建议设置为 0 ,在生产环境建议设置为100 --> 30. **<****bufferSize** value="0" **/>** 31. <!--访问数据库驱动的引用--> 32. **<****connectionType** value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" **/>** 33. <!--数据库连接字符串--> 34. **<****connectionString** value="server=.;database=Log4Net;uid=sa;password=123.com;"**/>** 35. <!--数据库执行的Sql语句--> 36. **<****commandText** value="INSERT INTO Log4Net (\[Date\],\[Thread\],\[Level\],\[Logger\],\[Message\],\[Exception\]) VALUES (@log\_date, @thread, @log\_level, @logger, @message, @exception)" **/>** 37. <!-- 日志记录时间,RawTimeStampLayout为默认的时间输出格式 --> 38. **<****parameter****>** 39. **<****parameterName** value="@log\_date" **/>** 40. **<****dbType** value="DateTime" **/>** 41. **<****layout** type="log4net.Layout.RawTimeStampLayout" **/>** 42. **</****parameter****>** 43. <!--线程号--> 44. **<****parameter****>** 45. **<****parameterName** value="@thread" **/>** 46. **<****dbType** value="String" **/>** 47. **<****size** value="255" **/>** 48. **<****layout** type="log4net.Layout.PatternLayout"**>** 49. **<****conversionPattern** value="%thread" **/>** 50. **</****layout****>** 51. **</****parameter****>** 52. <!--日志等级 级别从低到高分别是:debug(调试),info(信息),warn(警告),error(错误),fatal(致命错误)--> 53. **<****parameter****>** 54. **<****parameterName** value="@log\_level" **/>** 55. **<****dbType** value="String" **/>** 56. **<****size** value="50" **/>** 57. **<****layout** type="log4net.Layout.PatternLayout"**>** 58. **<****conversionPattern** value="%level" **/>** 59. **</****layout****>** 60. **</****parameter****>** 61. <!--产生日志的类--> 62. **<****parameter****>** 63. **<****parameterName** value="@logger" **/>** 64. **<****dbType** value="String" **/>** 65. **<****size** value="255" **/>** 66. **<****layout** type="log4net.Layout.PatternLayout"**>** 67. **<****conversionPattern** value="%logger" **/>** 68. **</****layout****>** 69. **</****parameter****>** 70. <!----> 71. **<****parameter****>** 72. **<****parameterName** value="@message" **/>** 73. **<****dbType** value="String" **/>** 74. **<****size** value="4000" **/>** 75. **<****layout** type="log4net.Layout.PatternLayout"**>** 76. **<****conversionPattern** value="%message" **/>** 77. **</****layout****>** 78. **</****parameter****>** 79. **<****parameter****>** 80. **<****parameterName** value="@exception" **/>** 81. **<****dbType** value="String" **/>** 82. **<****size** value="2000" **/>** 83. **<****layout** type="log4net.Layout.ExceptionLayout" **/>** 84. **</****parameter****>** 85. **</****appender****>** 86. 87. <!-- Setup the root category, add the appenders and set the default level --> 88. **<****root****>** 89. **<****level** value="ALL" **/>** 90. **<****appender-ref** ref="RollingLogFileAppender" **/>** 91. **<****appender-ref** ref="AdoNetAppender\_SqlServer" **/>** 92. **</****root****>** 93. 94. **</****log4net****>** 95. **</****configuration****>** Program.cs代码,如下: **\[csharp\]** [view plain][] [copy][view plain] [print][view plain] [?][view plain] [![在CODE上查看代码片][CODE]][CODE_CODE] [![派生到我的代码片][ico_fork.svg]][ico_fork.svg 1] 1. **using** log4net; 2. **using** System; 3. **using** System.Collections.Generic; 4. **using** System.Linq; 5. **using** System.Text; 6. **using** System.Threading.Tasks; 7. 8. \[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Content/Config/Log4Net.config", Watch = **true**)\] 9. **namespace** Com.No1.Log4Net.SqlServer 10. \{ 11. **class** Program 12. \{ 13. **protected** **static** **readonly** ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 14. **static** **void** Main(**string**\[\] args) 15. \{ 16. **for** (**int** i = 0; i < 101; i++) 17. \{ 18. logger.Debug("Test" + i); 19. \} 20. \} 21. \} 22. \} [数据库][Link 1]创建表脚本: **\[sql\]** [view plain][] [copy][view plain] [print][view plain] [?][view plain] [![在CODE上查看代码片][CODE]][CODE_CODE] [![派生到我的代码片][ico_fork.svg]][ico_fork.svg 1] 1. **CREATE** **TABLE** \[dbo\].\[Log4Net\]( 2. \[Id\] \[**bigint**\] IDENTITY(1,1) NOT NULL, 3. \[**Date**\] \[datetime2\](7) NULL, 4. \[Thread\] \[**varchar**\](255) NULL, 5. \[**Level**\] \[**varchar**\](255) NULL, 6. \[Logger\] \[**varchar**\](255) NULL, 7. \[Message\] \[**varchar**\](255) NULL, 8. \[Exception\] \[**varchar**\](255) NULL, 9. **CONSTRAINT** \[PK\_Log4Net\] **PRIMARY** **KEY** CLUSTERED 10. ( 11. \[Id\] **ASC** 12. )**WITH** (PAD\_INDEX = **OFF**, STATISTICS\_NORECOMPUTE = **OFF**, IGNORE\_DUP\_KEY = **OFF**, ALLOW\_ROW\_LOCKS = **ON**, ALLOW\_PAGE\_LOCKS = **ON**) **ON** \[**PRIMARY**\] 13. ) **ON** \[**PRIMARY**\] 14. 15. GO 结果,如下图: ![Center][] [测试][Link 2]时注意修改节点 : **connectionString **修改为 自己测试环境的连接字符串 注意点: <!--bufferSize 为缓冲区大小,只有日志记录超设定值才会一块写入到数据库 --> <!-- 注意bufferSize 参数在测试环境建议设置为 0 ,在生产环境建议设置为100 --> <bufferSize value="0" /> 如果测试环境设置成 100 ,则缓冲区 超过100条 消息才会 写入SqlServer库,这个很容易忘记,造成不必要的问题。测试环境 请设置成 0 [ ][Link 3] [测试代码,点击下载!][Link 3] [使用Log4Net - 文件日志 ][Log4Net -] [使用Log4Net - 文件日志 和 SqlServer日志][Log4Net - _ _ SqlServer] [ 使用Log4Net - 文件日志 和 Oracle日志][Log4Net - _ _ Oracle] [Log4Net -]: http://blog.csdn.net/csethcrm/article/details/52858554 [Log4Net - _ _ SqlServer]: http://blog.csdn.net/csethcrm/article/details/52858683 [Log4Net - _ _ Oracle]: http://blog.csdn.net/csethcrm/article/details/52858837 [view plain]: http://blog.csdn.net/csethcrm/article/details/52858683# [CODE]: https://code.csdn.net/assets/CODE_ico.png [CODE_CODE]: https://code.csdn.net/snippets/1937122 [ico_fork.svg]: https://code.csdn.net/assets/ico_fork.svg [ico_fork.svg 1]: https://code.csdn.net/snippets/1937122/fork [Link 1]: http://lib.csdn.net/base/mysql [Center]: /images/20220710/18a1a7a6fa924288b4794ca981d93a8b.png [Link 2]: http://lib.csdn.net/base/softwaretest [Link 3]: http://download.csdn.net/detail/csethcrm/9657873
还没有评论,来说两句吧...