log4net 写数据到sql数据库
最近需要把用户的一些行为添加到数据库中,所以想到了用log4net ,如果有别的好的方案,大家可以给我指正。
先看一下配置文件 我这个是控制台文件 app.config
<layout type="LogTest.MyLayout, LogTest" >
<param name="ConversionPattern" value="%property{Log_Type}"/>
</layout>
这样的是自定义参数
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<root>
<level value="ALL"></level>
<appender-ref ref="ADONetAppender"/>
</root>
<!-- SQL数据库-->
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
<bufferSize value=""/>
<!-- SQL数据源 ,本地安装SQL客户端-->
<connectionType value="System.Data.SqlClient.SqlConnection,System.Data, Version=1.0.3300.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" />
<connectionString value="database=ASM_UserManger;server=xxxxxx;User ID=xxx;Password=xxxx" />
<commandText value="INSERT INTO ASM_Log ([Log_Object],[Log_Type],[Log_Content],[Log_Url],[au_ID]) VALUES (@Log_Object,@Log_Type, @Log_Content, @Log_Url, @au_ID)"/>
<parameter>
<parameterName value="@Log_Object"/>
<dbType value="String"/>
<size value=""/>
<layout type="LogTest.MyLayout, LogTest" >
<param name="ConversionPattern" value="%property{Log_Object}"/>
</layout>
</parameter>
<parameter>
<parameterName value="@Log_Type"/>
<dbType value="String"/>
<size value=""/>
<layout type="LogTest.MyLayout, LogTest" >
<param name="ConversionPattern" value="%property{Log_Type}"/>
</layout>
</parameter>
<parameter>
<parameterName value="@Log_Content"/>
<dbType value="String"/>
<size value=""/>
<layout type="LogTest.MyLayout, LogTest" >
<param name="ConversionPattern" value="%property{Log_Content}"/>
</layout>
</parameter>
<parameter>
<parameterName value="@Log_Url"/>
<dbType value="String"/>
<size value=""/>
<layout type="LogTest.MyLayout, LogTest" >
<param name="ConversionPattern" value="%property{Log_Url}"/>
</layout>
</parameter>
<!-- 自定义成员 -->
<parameter>
<parameterName value="@au_ID" />
<dbType value="Int32" />
<layout type="LogTest.MyLayout, LogTest" >
<param name="ConversionPattern" value="%property{au_ID}"/>
</layout>
</parameter>
</appender>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
MyLayout 是一个映射类
public class MyLayout : PatternLayout {
public MyLayout() {
this.AddConverter("property", typeof(MyMessagePatternConverter));
}
}
public class MyMessagePatternConverter : PatternLayoutConverter {
protected override void Convert(System.IO.TextWriter writer, log4net.Core.LoggingEvent loggingEvent) {
if (Option != null) {
// Write the value for the specified key
WriteObject(writer, loggingEvent.Repository, LookupProperty(Option, loggingEvent));
}
else {
// Write all the key value pairs
WriteDictionary(writer, loggingEvent.Repository, loggingEvent.GetProperties());
}
}
/// <summary>
/// 通过反射获取传入的日志对象的某个属性的值
/// </summary>
/// <param name="property"></param>
/// <returns></returns>
private object LookupProperty(string property, log4net.Core.LoggingEvent loggingEvent) {
object propertyValue = string.Empty;
PropertyInfo propertyInfo = loggingEvent.MessageObject.GetType().GetProperty(property);
if (propertyInfo != null)
propertyValue = propertyInfo.GetValue(loggingEvent.MessageObject, null);
return propertyValue;
}
}
控制台文
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace LogTest {
class Program {
static void Main(string[] args) {
log4net.Config.XmlConfigurator.Configure(); log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
log.Info(new ASM_Log { au_ID = , Log_Content = "", Log_Type = "s", Log_Object = "", Log_Url = "sss" }); Console.ReadKey();
}
}
public class ASM_Log {
public int au_ID { set; get; }
public string Log_Object { set; get; }
public string Log_Type { set; get; }
public string Log_Content { set; get; } public string Log_Url { set; get; }
}
}
因为项目和别的项目相连,所以有需要的需要引用现有项目就可以
下载链接:http://pan.baidu.com/s/1jHJgLnS
log4net 写数据到sql数据库的更多相关文章
- Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)
知识点: 1.使用SQL Helper创建数据库 2.数据的增删查改(PRDU:Put.Read.Delete.Update) 背景知识: 上篇文章学习了保存文件,今天学习的是保存数据到SQL数据库中 ...
- SQL语句:把Excel文件中数据导入SQL数据库中的方法
1.从Excel文件中,导入数据到SQL数据库情况一.如果接受数据导入的表不存在 select * into jd$ from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ...
- Log4net 写文件日志与数据库日志
一.数据库日志表结构 CREATE TABLE [dbo].[WebLog_Msg]( [LogID] [int] IDENTITY(1,1) NOT NULL, [Date] [datetime] ...
- JSP+JDBC实现在可视化页面中插入数据到SQL数据库
原创 本篇博客创建一个如下图所示的JSP页面,将用户填入的数据插入到对应的数据库中. JSP页面代码: <%@ page language="java" contentTyp ...
- 定时从多个Excel导入数据到SQL数据库
Scheduling Data Imports in SQL Server Importing data into a SQL Server database isn't really that tr ...
- (译)Windows Azure的7月更新:SQL数据库,流量管理,自动缩放,虚拟机
Windows Azure的7月更新:SQL数据库,流量管理,自动缩放,虚拟机 今早我们释出一些很棒的Windows Azure更新.这些新的提升包括:SQL数据库:支持SQL自动导出和一个新的高级层 ...
- MapReduce 程序mysql JDBC驱动类找不到原因及学习hadoop写入数据到Mysql数据库的方法
报错 :ClassNotFoundException: com.mysql.jdbc.Driver 需求描述: hadoop需要动态加载个三方jar包(比如mysql JDBC 驱动包),是在MR结束 ...
- C#读取csv、xls、sql数据库的实现
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...
- php向数据库写数据逻辑
先写php 文件 1.post请求 1)先确定传进来的数据有值 没有就退出程序 if(!isset($_POST['username'])){ die('没有传值') } 2)设config.php ...
随机推荐
- Python玩转微信小程序
用Python玩转微信 Python玩转微信 大家每天都在用微信,有没有想过用python来控制我们的微信,不多说,直接上干货! 这个是在 itchat上做的封装 http://itchat. ...
- MySQL 5.5/5.6/5.7及以上版本安装包安装时如何选择安装路径
安装环境需求: 自从昨天安装了mysql 5.7,发现了一个问题,mysql5.6起,已经不支持2003系统了,如果安装了无法开启服务而且会出现在 本地计算机 无法启动 MySQL57 服务.错误 1 ...
- windows下载的java项目部署到linux的各种解决方案
1.Java是跨平台的,在linux下有问题,主要一是文件读取权限:二检查下系统环境变量设置可正确!.profile JavaWeb_将Windows平台上开发的JavaWeb项目部署到Linux平台 ...
- 每天一道Rust-LeetCode(2019-06-11)
每天一道Rust-LeetCode(2019-06-02) Z 字形变换 坚持每天一道题,刷题学习Rust. 题目描述 全排列 II 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例: 输 ...
- 【PL/SQL】PLSQL Developer注册码
[12.0.7] product code: 4vkjwhfeh3ufnqnmpr9brvcuyujrx3n3le serial Number:226959 password: xs374ca
- ABP 下载源码报错
ASP.NET Boilerplate 下载地址应该是这个:https://github.com/aspnetboilerplate/aspnetboilerplate/tree/v1.5.2 下载的 ...
- gif转mp4
- [LeetCode] 673. Number of Longest Increasing Subsequence 最长递增序列的个数
Given an unsorted array of integers, find the number of longest increasing subsequence. Example 1: I ...
- thinkphp5.1 - twig使用
thinkphp5.1 - twig使用1.安装按照:https://github.com/yunwuxin/think-twigTwig Template For ThinkPHP5 安装 comp ...
- 第三次实验报告:使用Packet Tracer分析TCP连接建立过程
目录 1 实验目的 2 实验内容 3. 实验报告 3.1 建立网络拓扑结构 3.2 配置参数 3.3 抓包,分析TCP连接建立过程 4. 拓展 (不作要求,但属于加分项) 1 实验目的 使用路由器连接 ...