最近在使用log4net 记录日志 但是遇到了一些问题
可以写到text里面 但是不能插入数据库
配置文件写好了和Assemblyinfo.cs 写好了
这是控制器
数据库没有数据
但是text里面已经写入了
数据库连接字符串正确,添加语句正确
log4net中代码如下
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <!--设置一个自定义配置区域--> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <!----> <log4net debug="true"> <root> <!-- debug 调试 info 信息 warn 警告 error 错误 fatal 严重错误 --> <level value="debug" /> <!-- 对应的日志记录方式 RollingLogFileAppender 追加日志文件 ConsoleAppender 控制台 ADONetAppender 使用ADO.NET 将日志写入到 数据库 --> <appender-ref ref="T148FileAppender" /> <appender-ref ref="ConsoleAppender" /> <appender-ref ref="SqlAppender"/> </root> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > <!--日志显示时的格式--> <layout type="log4net.Layout.PatternLayout"> <!--<param name="header" value="T148日志记录"/>--> <header value ="T148日志记录 "/> <footer value="================== "/> <conversionPattern value="[%date] %level [%thread][%c:%line] - %m%n" /> </layout> </appender> <appender name="T148FileAppender" type="log4net.Appender.RollingFileAppender" > <!--文件路径和文件名--> <file value="logfile/" /> <!--在文件中进行追加--> <appendToFile value="true" /> <!--滚动类型: Once 滚动一次 Size 按文件大小创建 Date 按文件日期 Composite 日期,大小 复杂模式 --> <rollingStyle value="Composite" /> <!--是否为固定文件名--> <staticLogFileName value="false" /> <!--日期格式--> <datePattern value="yyyy-MM-dd'.log'" /> <!--最大文件备份数--> <maxSizeRollBackups value="10" /> <!--最大文件大小--> <maximumFileSize value="1MB" /> <layout type="log4net.Layout.PatternLayout"> <!--<param name="header" value="T148日志记录"/>--> <header value ="T148日志记录 "/> <footer value="================== "/> <conversionPattern value="[%date] %level [%thread][%c:%line] - %m%n" /> </layout> </appender> <appender name="SqlAppender" type="log4net.Appender.AdoNetAppender" > <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> <connectionString value ="server=.;database=T148Log;uid=sa;pwd=123456"/> <commandText value="INSERT INTO Log VALUES (@date, @thread, @level, @logger, @message,@Exception)"/> <parameter> <parameterName value="@date"/> <dbType value="DateTime"/> <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}"/> </parameter> <parameter> <parameterName value="@thread"/> <dbType value="String"/> <size value="255"/> <layout type="log4net.Layout.PatternLayout" value="%thread"/> </parameter> <parameter> <parameterName value="@level"/> <dbType value="String"/> <size value="50"/> <layout type="log4net.Layout.PatternLayout" value="%level"/> </parameter> <parameter> <parameterName value="@logger"/> <dbType value="String"/> <size value="255"/> <layout type="log4net.Layout.PatternLayout" value="%logger"/> </parameter> <parameter> <parameterName value="@message"/> <dbType value="String"/> <size value="4000"/> <layout type="log4net.Layout.PatternLayout" value="%message"/> </parameter> <parameter> <parameterName value="@Exception"/> <dbType value="String"/> <size value="4000"/> <layout type="log4net.Layout.PatternLayout" value="%Exception"/> </parameter> </appender> </log4net> </configuration>
有没有引用System.Data
?
在controllers里面引用system.data 没有用 提示using指令是不需要的
@HJumping: 点开Visual Studio右侧解决方案管理器中的“引用”,看有没有System.Data
@dudu:
嗯 有
@HJumping: 参考 开箱即用 - log4net 日志 检查一下配置
@dudu: 我又写了一个控制台程序,还是这些代码没有改,完全没有错啊,文本文件也记录了,数据库也记录了,可是换成mvc就不记录数据库,我找老师看了一下 我们老师也没有发现错误。
@HJumping: Web.config 中有没有引用 Log4net.config ?
@dudu:
我在view文件夹下Web.config里面引用了 ,在根目录下Web.config文件里没有引用
@HJumping: 要在根目录下的Web.config引用
@HJumping: 根目录引用
@dudu:
引用了 不过还是不记录数据库
是不是我controller里的 static ILog log = LogManager.GetLogger(typeof(LoginController));有错
@庸斋杂记: 嗯 刚改了
@HJumping: 参考 Log4Net 1.2.0 记录在MSSql数据库用法,有没添加 log4net.Config.XmlConfigurator.Configure();
或者[assembly: log4net.Config.XmlConfigurator(Watch = true)]
@dudu: 您好 经过这两天的仔细排查 我终于解决问题了 ,首先在Web.Config里引用log4net引用错了,换成了根目录,其次Log4net中的格式有误,谢谢您
@HJumping: 能发一下完整的代码吗
建议贴出 Log4net.config 中的配置
– dudu 6年前@dudu: 嗯嗯 上传了
– HJumping 6年前