如何配置Log4Net使用Oracle数据库记录日志
最近在做一个项目的时候,需要增加一个日志的功能,需要使用Log4Net记录日志,把数据插入到Oracle数据库,经过好久的研究终于成功了。把方法记录下来,以备以后查询。
直接写实现方法,分两步完成:
1、使用NuGet Manager管理工具,增加对Oracle.ManagedDataAccess.dll的引用。
2、配置具体的文件。
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<appSettings>
<add key="log4net.Internal.Debug" value="true "/>
</appSettings>
<log4net>
<!-- 产生数据的脚本
Create table T_LogHistory
(
id NUMBER not null,
log_date DATE not null,
log_thread VARCHAR2(50) not null,
log_level VARCHAR2(50) not null,
log_logger VARCHAR2(150) not null,
log_operator VARCHAR2(50) not null,
log_message VARCHAR2(500) not null,
log_iP VARCHAR2(50) not null,
log_machineName VARCHAR2(50) not null,
log_browser VARCHAR2(50) not null,
log_location VARCHAR2(500) not null,
log_exception VARCHAR2(1500) not null,
constraint pk_LogHistory primary key(id)
);
Create Sequence seq_LogHistory_ID
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
nocache;
-->
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender,log4net">
<!--BufferSize为缓冲区大小,只有日志记录超设定值才会一块写入到数据库-->
<bufferSize value="1" />
<!--或写为<param name="BufferSize" value="10" />-->
<!--引用-->
<!--<connectionType value="System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>-->
<connectionType value="Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
<!--连接数据库字符串-->
<connectionString value="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=80))(CONNECT_DATA=(SERVICE_NAME=databaseName)));User Id=*******;Password=*******;" />
<!--插入到表Log-->
<commandText value="insert into t_loghistory(id, log_date, log_thread, log_level, log_logger, log_operator, log_message, log_ip, log_machinename, log_browser, log_location, log_exception) values(SEQ_LOGHISTORY_ID.nextval, :logDate, :thread, :log_level, :logger, :operator, :message, :clientIP, :machineName, :browser, :location, :exception)" />
<!--日志记录时间,RawTimeStampLayout为默认的时间输出格式-->
<parameter>
<parameterName value=":logDate" />
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout"/>
</parameter>
<!--线程号-->
<parameter>
<parameterName value=":thread" />
<dbType value="String" />
<!--长度不可以省略,否则不会输出-->
<size value="100" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<!--日志等级-->
<parameter>
<parameterName value=":log_level" />
<dbType value="String" />
<size value="100" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<!--日志记录类名称-->
<parameter>
<parameterName value=":logger" />
<dbType value="String" />
<size value="200" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<!--操作者。这个是自定义的输出字段,使用重新实现的布局器ReflectionLayout-->
<parameter>
<parameterName value=":operator" />
<!--设置为Int32时只有bufferSize的 value<="1"才正确输出,没有找出原因。-->
<dbType value="String" />
<size value="200"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%username" />
</layout>
</parameter>
<!--IP地址-->
<parameter>
<parameterName value=":clientIP" />
<dbType value="String" />
<size value="20" />
<layout type="Enterprise.Framework.Logger.Extensions.ClientIPLayout,Enterprise.Framework.Logger">
<conversionPattern value="%ClientIP"/>
</layout>
</parameter>
<!--机器名-->
<parameter>
<parameterName value=":machineName" />
<dbType value="String" />
<size value="100" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{log4net:HostName}" />
</layout>
</parameter>
<!--浏览器-->
<parameter>
<parameterName value=":browser" />
<dbType value="String" />
<size value="50" />
<layout type="Enterprise.Framework.Logger.Extensions.BrowserLayout">
<conversionPattern value="%Browser" />
</layout>
</parameter>
<!--日志消息-->
<parameter>
<parameterName value=":message" />
<dbType value="String" />
<size value="3000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<!--记录日志的位置-->
<parameter>
<parameterName value=":location" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%location" />
</layout>
</parameter>
<!--异常信息。ExceptionLayout 为异常输出的默认格式-->
<parameter>
<parameterName value=":exception" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
<root>
<!--高 OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL 低-->
<level value="ALL"/>
<appender-ref ref="ADONetAppender" />
</root>
<!--<logger name="StellaLogger">
<level value="ALL"/>
<appender-ref ref="AdoNetAppender" />
</logger>-->
</log4net>
</configuration>
完成上面两步就可以实现Log4Net针对数据库Oracle的记录插入。
如何配置Log4Net使用Oracle数据库记录日志的更多相关文章
- [转]如何配置Log4Net使用Oracle数据库记录日志
本文转自:http://www.cnblogs.com/PatrickLiu/p/6012153.html 最近在做一个项目的时候,需要增加一个日志的功能,需要使用Log4Net记录日志,把数据插入到 ...
- springMVC 配置jdbcTemplate连接Oracle数据库出错
springMVC 配置jdbcTemplate连接Oracle数据库出错 错误信息: log4j:WARN No appenders could be found for logger (org.s ...
- 修改本地配置远程连接oracle数据库
当我们需要查看数据库信息时,我们更愿意通过客户端来查看,这样不仅操作方便,而且查看更精准.那么需要远程连接数据库需要在本地修改那些配置呢?以下是我个人的经验,希望大家都指正. 1.在oracle安装目 ...
- PLSQL Developer安装、配置、连接oracle数据库
0.资源准备 1) PLSQL Developer安装包(由于安装包超过10M,无法上传,请自行下载) 2) instantclient_11_2安装包(由于安装包超过10M,无法上传,请自行下载) ...
- Navicat Premium 连接Oracle 数据库之配置
Navicat Premium连接Oracle 数据库之配置 1.Oracle数据库服务器下载 Oracle官方网站下载数据库最新版本:http://www.oracle.com/technetwor ...
- c#用log4Net将日志写入到Oracle数据库,并写入到文件中
原文:c#用log4Net将日志写入到Oracle数据库,并写入到文件中 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https:/ ...
- oracle数据库的安装、配置与无残留卸载
安装配置 :关闭专用网络防火墙 2 :以管理员身份运行安装文件 ——“setup.exe” 3 :设置口令 其中SYS 用户权限大于 SYSTEM 4 :先决条件检查,若验证成功,点击 ”下 ...
- 三、oracle数据库成功安装步骤 Oracle数据源配置
安装完Oracle驱动后,如需连接远程Oracle数据库,还需进行数据源配置,类似Windows下的ODBC数据源配置. 运行"开始菜单\Oracle - OraDb11g_home1\ ...
- 二、oracle数据库成功安装步骤 配置监听器
Oracle数据库使用监听器来接收客户端的连接请求,要使客户端能连接Oracle数据库,必须配置监听程序. 在安装Oracle数据库时,如果选择的是"创建和配置数据库",则安装 ...
随机推荐
- 《Entity Framework 6 Recipes》中文翻译系列 (45) ------ 第八章 POCO之获取原始对象与手工同步对象图和变化跟踪器
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 8-6 获取原始对象 问题 你正在使用POCO,想从数据库获取原始对象. 解决方案 ...
- 常用RGB色值表
R G B 值 R G B 值 R G B 值 黑色 0 0 0 #000000 黄色 255 255 0 #FFFF00 浅灰蓝色 176 224 230 #B0E0E6 象牙黑 41 ...
- fir.im Weekly - TouchBar 从入门到开发
自从 Macbook Pro 发布重大更新, TouchBar 一直是开发者的重点关注对象.除了NSTouchBar官方文档,速度快者如 @毫无存在感的Cee,分享了一篇 NSTouchBar 的入门 ...
- Sql Server系列:数据库操作
1 创建数据库 1.1 CREATE DATABASE语法 CREATE DATABASE database_name [ ON [ PRIMARY ] <filespec> [ ,... ...
- 前端MVVM框架avalon揭秘 - HTML编译器
MVVM试图更加清晰的讲用户界面(UI)开发从应用程序的业务逻辑与行为中心分离,因为,很多这样的模式的实现都需要利用声明式数据绑定来实现讲View(视图)工作从其他层分离 所以出现了一大堆自定义的声明 ...
- VS2013中web项目中自动生成的ASP.NET Identity代码思考
vs2013没有再分webform.mvc.api项目,使用vs2013创建一个web项目模板选MVC,身份验证选个人用户账户.项目会生成ASP.NET Identity的一些代码.这些代码主要在Ac ...
- 在Windows中安装NodeJS的正确姿势
NodeJS已经非常流行了,而且可以预见他将继续受到追捧.这确实是一个不错的创举,想想看他现在能做什么吧 1.服务器程序(典型的就是用来做网站或者restful服务,主打就是多线程,非阻塞,最后,一个 ...
- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是/var/log/mysqld.log. 一般可通 ...
- jQuery的事件模型
前几天自己着重读了jQuery1.11.1的源码,又结合了之前对DE事件模型的分析,最后也实现一个简陋的事件模型. jQuery的事件系统离不开jQuery的缓存系统. jQuery的第一代缓存是直接 ...
- Macaca自动化测试之Android测试
Macaca PC端 Web自动化测试非常类似于Selenium,而移动端自动化测试非常类似于Appium,如果你搭建过Appium环境,Macaca移动端环境的搭建将非常简单. 本文继承上一篇,关于 ...