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中的参数顺序一致。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2016-06-19 C#快速生成数据数组