1. 程式人生 > >Log4J寫入到SQL SERVER資料庫中, 單引號錯誤解決辦法

Log4J寫入到SQL SERVER資料庫中, 單引號錯誤解決辦法

Log4j之重寫JDBCAppender

新建類:MyLoggingEvent , 來轉換單引號

/**
 * 
 */
package com.hr.core;

import org.apache.log4j.Category;
import org.apache.log4j.Priority;
import org.apache.log4j.spi.LoggingEvent;

/**
 * @author zhong
 *
 */
public class MyLoggingEvent extends LoggingEvent {
    private static final long
serialVersionUID = -1405129465403337629L; public MyLoggingEvent(String fqnOfCategoryClass, Category logger, Priority level, Object message, Throwable throwable) { super(fqnOfCategoryClass, logger, level, message, throwable); // TODO Auto-generated constructor stub } public String getThreadName
() { // TODO Auto-generated method stub String thrdName=super.getThreadName(); if(thrdName.indexOf("'")!=-1){ thrdName=thrdName.replaceAll("'", "''"); } return thrdName; } public String getRenderedMessage() { String msg=super.getRenderedMessage(); if
(msg.indexOf("'")!=-1){ msg=msg.replaceAll("'", "''"); } return msg; } }

新建類:MyJDBCAppender , 來解發重寫方法的呼叫

/**
 * 
 */
package com.hr.core;

import org.apache.log4j.Category;
import org.apache.log4j.Priority;
import org.apache.log4j.jdbc.JDBCAppender;
import org.apache.log4j.spi.LoggingEvent;

/**
 * @author zhong
 *
 */
public class MyJDBCAppender extends JDBCAppender {
    protected String getLogStatement(LoggingEvent event) {

        String fqnOfCategoryClass=event.fqnOfCategoryClass;

        Category logger=Category.getRoot();

        Priority level=event.level;

        Object message=event.getMessage();

        Throwable throwable=null;

        MyLoggingEvent bEvent=new MyLoggingEvent(fqnOfCategoryClass,logger,level,message,throwable);

        return super.getLogStatement(bEvent);
    }
}

附: log4j.properties 配置

log4j.rootCategory=INFO,A3,R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss,SSS}%m%n
log4j.logger.Java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout,logfile,A3 


log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/hr_log.log
log4j.appender.R.MaxFileSize=1024KB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[HL] %p %t %c - %m%n

#
log4j.appender.A3=com.hr.core.MyJDBCAppender
log4j.appender.A3.URL=jdbc\:sqlserver\://localhost\:1433;DatabaseName\=zhaochi_1
log4j.appender.A3.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
log4j.appender.A3.user=sa
log4j.appender.A3.password=pwterp

#
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=INSERT INTO log4j(createDate,thread,grade,class,message) values('%d','%t','%-5p','%c','%m')

相關推薦

Log4J寫入SQL SERVER資料庫, 引號錯誤解決辦法

Log4j之重寫JDBCAppender 新建類:MyLoggingEvent , 來轉換單引號 /** * */ package com.hr.core; import org.apach

Sql Server添加引號

問題 convert 分享圖片 單引號 .cn alt har top www. " ‘ "(單引號)的運用:在sql server中,兩個" ‘ "(單引號)在拼接字符串的情況下運用,就是表示拼接上了一個" ‘ "單引號字符串。 SELECT TOP 1 ‘‘‘‘+C

BCP工具的使用以及C++,SQL server資料庫呼叫命令列的方法

BCP工具使用: BCP是由SYBASE公司提供的,專門用於資料庫表一級資料備份的工具。 主要引數如下: 基本用法: 遠端地址1的資料庫表student 匯出到本地(遠端ip1(10.189.1.1) ): bcp run.dbo.student out "c:\student

C#將圖片存放到SQL SERVER資料庫的方法

本文例項講述了C#將圖片存放到SQL SERVER資料庫中的方法。分享給大家供大家參考。具體如下: 第一步:  //獲取當前選擇的圖片 this.pictureBox1.Image = Image.FromStream(this.openFileDialog1.OpenFil

sql server資料庫 smallint, int ,bigint ,tinyint的區別與長度 sql server資料庫 smallint, int ,bigint ,tinyint的區別與長度

sql server資料庫中 smallint, int ,bigint ,tinyint的區別與長度 smallint  是一種精確的數值資料型別,其精度在算術運算後不變,採用2個位元組編碼  有符號的 smallint 值的範圍是 -2^15-------2^15 -

將word文件資料匯入到sql server資料庫

我現在的需求是這樣的,需要將這些題目插入到sql server資料庫中。 並且要對應起來,一開始在網上找了很多方法,都沒有找到合適的。 後面感覺,還是自己寫一個比較好,因為只有自己寫的,才是最適合你的! 於是就開始倒騰。 1、首先是讀取word中的資料,在我上

用Java向SQL Server資料庫插入float資料報錯An error occurred while converting the Float value to JDBC data type

作者:翁鬆秀 用Java向SQL Server資料庫中插入float資料報錯 用Java向SQL Server資料庫中插入float資料報錯

C#同步SQL Server資料庫的資料–資料庫同步工具[同步新資料]

C#同步SQL Server資料庫中的資料1. 先寫個sql處理類:using System;using System.Collections.Generic;using System.Data;using System.Data.SqlClient;using System.Text; namespace

SQL Server資料庫的資料–資料庫同步工具[同步新資料]

C#同步SQL Server資料庫中的資料1. 先寫個sql處理類:using System;using System.Collections.Generic;using System.Data;using System.Data.SqlClient;using System.Text; namespace

Sql Server資料庫Identity型別欄位的使用

大家在建立資料庫的時候肯定是經常使用Identity標識欄位型別的。下面就介紹兩個使用這種型別欄位的小技巧。 1.讓標識欄位從指定的數字開始計數: DBCC checkident (TableName,reseed,計數值-1) 如:讓customers表重新從1開始計數 d

sql server資料庫使用者模式改為多使用者模式

今天想在sql server2005下複製一個數據庫,結果最後一步出錯,複製沒成功反而導致資料庫打不開了, 名稱後出現“單個使用者”,估計是進行復制的時候自動將其改為了單使用者模式,可通過執行如下語句恢復多使用者模式。 原理是先kill佔用了資料庫的那個程序,然後設定資料庫

如何把EXCEL資料匯入到SQL SERVER資料庫

在我們完成一個專案開發之後,通常我們需要把客戶的很多資料匯入到資料庫中,面對大量的資料匯入工作,人工匯入肯定是不現實,但是這些又是不得不完成的工作,怎麼辦呢?我們可以利用資料庫管理工具提供的資料匯入的功能即可。我們這裡以SQL SERVE2008為例。SQLSERVER2

SQL Server資料庫查詢含有某個欄位的表及該表記錄條數

SELECT object_name(sc.id) as TableName, sc.Name as ColumnName, si.rows as RowCounts FROM SysColumns sc LEFT JOIN SysObjects so ON sc.id =

將ACCESS資料庫資料轉到SQL server資料庫(通用)

把ACCESS資料庫轉換成SQL server資料庫,ACCESSH和SQL server都有很多不同的版本,但是轉換也都大同小易,和這裡我給大家說說最常見的怎麼將ACCESS轉化成SQL server的方法和步驟 1、開啟計算機”控制面板“下的”管理工具“中的”資料庫源“

Sql Server資料庫的更新表名、列名、列值

更新表名: execsp_rename'舊錶名','新表名' 更新列名: exec sp_rename '表名.[欄位原名]','欄位新名','column'                

sql server 2005 使用者、組或角色在當前資料庫已存在的解決辦法

在SQL SERVER 中附加一個其他伺服器上遷移過來讓資料庫後,建立登入名與資料庫使用者對映時出現如標題錯誤。 解決方法如下: sp_change_users_login 'update_one', 'wzjr', 'wzjr' sp_change_users_logi

如何所ACCESS資料庫的資料新增到SQL SERVER資料庫?

前提條件:1.假設Access連線字 符串為:string m_accConnection = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=/somepath/mydb.mdb;User Id=admin;Password=;" 遠端sql server伺服器的連

excel匯入到sql server資料庫

遇到的問題,標題: SQL Server 匯入和匯出嚮導 ------------------------------ 操作無法完成。 ------------------------------ 其他資訊: ConnectionString 屬性尚未初始化。 (System.Data) -----

C#中將DataGrid上的修改同步到SQL Server資料庫

關於資料庫與DataGrid的同步問題,要記住這句話: sqlDataadapter的作用是實現DataTable和DB之間的橋樑 1、資料更新機制 當呼叫SqlDataAdapter.Update()時,檢查DataSet中的所有行,然後對每一個修改過的R

SQL Server資料庫複製嚮導報錯解決

今天利用資料庫複製嚮導(Copy Database Wizard)將2012版本的資料庫複製到2014時,遇到了一些錯誤,並最終解決,特此記錄: 資料庫相容級別的有效值為 100、110 或 120 源資料庫相容性級別太低,改高一點即可 物件名XXX無