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中的参数顺序一致。


浙公网安备 33010602011771号