log4net输出日志到Oracle数据库
关于log4net的使用,请参考文章:https://www.cnblogs.com/duanjt/p/5850250.html
前面的使用方式都一样,这里主要就说说appender的配置。
1.创建Oracle中的表
create table bdcdataar.log4net_log ( no int primary key,--序号 log_date date,--时间 log_thread int,--线程号 log_level varchar2(10),--日志等级 log_location varchar2(500),--日志位置 log_message clob,--消息 log_exception clob,--异常 system_id varchar2(50) --系统id,用于标识不同的系统 ); create sequence bdcdataar.log4net_log_seq minvalue 1 maxvalue 999999999 start with 1 increment by 1;
2.appender的配置
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender,log4net"> <!--BufferSize为缓冲区大小,只有日志记录超设定值才会一块写入到数据库--> <bufferSize value="10" /> <!--引用--> <connectionType value="Oracle.ManagedDataAccess.Client.OracleConnection,Oracle.ManagedDataAccess,Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342"/> <!--连接数据库字符串--> <connectionString value="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.103.105)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=wifi)));User Id=stic;Password=soft;" /> <!--插入到表Log--> <commandText value="insert into bdcdataar.log4net_log(no,log_date,log_thread,log_level,log_location,log_message,log_exception,system_id) values(bdcdataar.log4net_log_seq.nextval,:log_date,:log_thread,:log_level,:log_location,:log_message,:log_exception,'产品管理系统')" /> <!--日志记录时间,RawTimeStampLayout为默认的时间输出格式--> <parameter> <parameterName value=":log_date" /> <dbType value="DateTime"/> <layout type="log4net.Layout.RawTimeStampLayout"/> </parameter> <!--线程号--> <parameter> <parameterName value=":log_thread" /> <dbType value="Int32" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%thread" /> </layout> </parameter> <!--日志等级--> <parameter> <parameterName value=":log_level" /> <dbType value="String" /> <size value="10" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level" /> </layout> </parameter> <!--记录日志的位置--> <parameter> <parameterName value=":log_location" /> <dbType value="String" /> <size value="500" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%location" /> </layout> </parameter> <!--日志消息--> <parameter> <parameterName value=":log_message" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message" /> </layout> </parameter> <!--异常信息。ExceptionLayout 为异常输出的默认格式--> <parameter> <parameterName value=":log_exception" /> <dbType value="String" /> <layout type="log4net.Layout.ExceptionLayout" /> </parameter> </appender>
关于使用方法这里就不说了,下面说一下connectionType的配置,这里涉及到Version和PublicKeyToken。
Version,直接找到对应的dll,然后右键-属性就能看到
PublicKeyToken,需要借助vs命令工具,SN -T Autofac.dll。后面的dll是相对路径
最后插入数据库的效果如下:
注意:
1.如果需要查看插入数据库的过程,需要在app.config中增加如下配置:
<appSettings> <add key="log4net.Internal.Debug" value="true "/> </appSettings>
2.xml中配置的参数一定要和sql中的参数顺序一致。