`

在m% 或者 t% 等出现需要转义字符时处理

阅读更多
实例:
package com.yss.util;

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

public class ReJDBCAppender extends JDBCAppender {

	protected String getLogStatement(LoggingEvent event) {
		String fqnOfCategoryClass = event.fqnOfCategoryClass;
		Category logger = Logger.getRootLogger();
		Priority level = event.getLevel();
		Object message = event.getMessage();
		Throwable throwable = null;
		ReLoggingEvent bEvent = new ReLoggingEvent(fqnOfCategoryClass, logger,
				level, message, throwable);
		return super.getLogStatement(bEvent);
	}
}

package com.yss.util;

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

public class ReLoggingEvent extends LoggingEvent {
	private static final long serialVersionUID = 1L;

	public ReLoggingEvent(String fqnOfCategoryClass, Category logger,
			Priority level, Object message, Throwable throwable) {
		super(fqnOfCategoryClass, logger, level, message, throwable);
	}

	/**
	 * 线程名单引号做处理
	 */
	public String getThreadName() {   
        String thrdName=super.getThreadName();   
        if(thrdName.indexOf("'")!=-1){   
            thrdName=thrdName.replaceAll("'", "''");   
        }   
        return thrdName;   
    }   

	/** 
	 * 对插入的message中包含的单引号(')做处理
	 * @see org.apache.log4j.spi.LoggingEvent#getRenderedMessage()
	 */
	public String getRenderedMessage() {
		String renderedMessage = super.getRenderedMessage();
		//插入的message中包含(')单引号需要处理
		if(renderedMessage.indexOf("'")!=-1)
			renderedMessage=renderedMessage.replaceAll("'", "''");
		return renderedMessage;
	}
}

配置:
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} %5p [%c]- %m%n

### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.RollingFileAppender
#log4j.appender.file.File=reportLog.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} %5p [%c]- %m%n
#log4j.appender.file.MaxFileSize=5MB
#log4j.appender.file.MaxBackupIndex=2

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=info,stdout,db

#log4j.logger.business=INFO,db  
#log4j.appender.db=com.neam.commons.MyJDBCAppender   
log4j.appender.db=com.yss.util.ReJDBCAppender
  
log4j.appender.db.BufferSize=1
log4j.appender.db.driver=${com.yss.db.driverClassName}
log4j.appender.db.URL=${com.yss.zt.url}
log4j.appender.db.user=${com.yss.zt.username}
log4j.appender.db.password=${com.yss.zt.password}
log4j.appender.db.sql=insert into RP_REPORTLOG(FLOW,USERNAME,REPORTCODE,REPORTDATE,LOGLEVEL,LOGMSG ,JCLASS ,JMETHOD ,ERRORTIME ) values (REPORTLOG.nextval,'%X{userName}','%X{reportCode}','%X{reportDate}','%p','%m','%M','%C','%d{yyyy-MM-dd HH:mm:ss}')
log4j.appender.db.layout=org.apache.log4j.PatternLayout

### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug

### log just the SQL
#log4j.logger.org.hibernate.SQL=debug

### log cache activity ###
#log4j.logger.org.hibernate.cache=debug

### log transaction activity
#log4j.logger.org.hibernate.transaction=debug

### log JDBC resource 
#log4j.logger.org.hibernate.jdbc=debug
分享到:
评论

相关推荐

    C语言常用转义字符表[参考].pdf

    需要注意的是,使用转义字符时需要遵守以下规则: 1. 转义字符中只能使用小写字母。 2. 每个转义字符只能看作一个字符。 3. \v 垂直制表和 \f 换页符对屏幕没有任何影响,但会影响打印机执行响应操作。 此外,在C...

    Python转义字符.pdf

    当需要在字符串中插入一个反斜杠时,需要用两个反斜杠来表示。 - **`\'`**: 单引号。用于在字符串中表示一个单引号字符。 - **`\"`**: 双引号。用于在字符串中表示一个双引号字符。 - **`\a`**: 响铃。用于发出系统...

    C语言转义字符和格式控制符参考

    在C语言编程中,转义字符是一种特殊字符序列,用于在源代码中插入无法直接键入或者具有特殊含义的字符。以下是对标题和描述中提及的转义字符的详细说明: 1. **\a**: 蜂鸣,响铃。在某些终端环境下,该转义字符会...

    C语言常用转义字符表.docx

    在处理字符串时,`sscanf`函数可以用来解析字符串,按照指定的格式提取信息。例如,它可以按照空格、制表符或回车符拆分字符串,或者提取固定长度的子字符串。 总之,C语言中的转义字符和格式化输入输出是编程中...

    (完整版)Python转义字符.doc

    Python 转义字符是指在字符串中使用特殊字符时,Python 使用反斜杠(\)转义字符。常见的转义字符有: * \(在行尾时) 续行符 * \\反斜杠符号 * \'单引号 * \"双引号 * \a响铃 * \b退格(Backspace) * \e转义 * \...

    常用的转义字符[总结].pdf

    转义字符是在编程语言中用于表示特殊字符的一种方法。在C语言和其他许多编程语言中,转义序列以反斜杠`\`开头。下面详细介绍了一些常用的转义字符。 1. **`\n`**:回车换行,ASCII码为10。这个字符常用于将光标移动...

    Python转义字符[定义].pdf

    ### Python转义字符详解 #### 一、转义字符概述 在编程语言中,转义字符是用来表示特殊字符的一种方式。Python中使用反斜杠(`\`)作为转义字符的标志,允许开发者在字符...这些函数使得在处理字符串时更加灵活高效。

    C语言第17讲C语言格式控制符和转义字符[归类].pdf

    转义字符在字符串中可以用于输出特殊字符,例如换行符、回车符、水平制表符等。同时,转义字符也可以用于输出特殊符号,例如单引号、双引号、反斜杠等。 在使用printf函数时,需要注意格式控制符和输出项的类型匹配...

    C语言转义字符和格式控制符参考[][文].pdf

    在C语言中,转义字符是一种特殊类型的字符常量,主要用于表示那些在源代码中无法直接输入或者需要特殊处理的字符。转义字符以反斜杠`\`开头。 #### 二、常见转义字符及其功能 1. **`\a`**: 发出警告声(蜂鸣或响铃...

    特殊字符串输入

    特殊字符串输入是一种重要的输入方式,尤其是在处理非英语文本或需要特殊符号的情况下。Alt代码作为其中一种实现手段,在Windows操作系统中得到了广泛的应用。通过对给定文件内容的分析,我们不仅了解了部分具体的...

    简单讲解Python中的字符串与字符串的输入输出

    转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\。当然如果不需要转义,可以使用r”: >>> print '\\\t\\' \ \ >>> print r'\\\t\\' \\\t\\ 如果字符串内部...

    利用ascii码传输xml转义字符示例

    XML能够传输大部分的可见字符,但是一些特殊的控制字符(如换行符\n、制表符\t等)以及某些特殊符号(如<、>、&等)被称为转义字符,它们在XML文档中不能直接出现,否则会破坏XML的结构或被误解析。为了在XML中传输...

    python3字符串

    在Python中,转义字符用于在字符串中插入特殊字符。例如,`\n`用于换行,`\t`用于添加制表符等。 | 转义字符 | 描述 | | --- | --- | | \\\\ | 反斜杠符号 | | \' | 单引号 | | \" | 双引号 | | \a | 响铃 | | \b |...

    第五天 01字符串介绍【千锋Python人工智能学院】1

    当字符串内部需要包含与定义字符串所用的引号相同的字符时,就需要使用转义字符。转义字符是一个反斜杠(\),它告诉Python解析器紧跟其后的字符应该被特殊处理而不是作为普通字符。例如,如果要在字符串中包含单引号...

    python字符串学习笔记.python字符串操作方法.doc

    - 当字符串内部需要包含与定义引号相同类型的引号时,可以使用转义字符`\`,如:`'Tom said:"I\'m Tom"'`。 - 使用三个单引号或双引号可以创建多行字符串,如:```Tom said:"I'm Tom"``` 或 `"""Tom said:"I'm Tom...

    Javascript 八进制转义字符(8进制)

    摸索过程中,看见这样的字符:”\155″,用来代替字符”m”。为什么?….... 155由8进制转为 10进制为 1*64+5*8+5=109 String.fromCharCode(109)===”m” 8进制或16进制转义字符 总共有256个 16进制

    matlab开发-未经许可的Javascriptstring

    在MATLAB开发过程中,有时我们需要处理来自外部源的JavaScript字符串,这些字符串可能包含转义字符。"未经许可的Javascriptstring"这个话题主要涉及到如何在MATLAB中解析和操作这类字符串,确保它们能正确地被理解和...

    lotus domino AJAX 转义ls 特殊符号

    例如,在处理字符串时,可以使用下面的代码来实现特殊符号的转义: ```lotusscript Function zhuanyi(key As String) As String Dim temp As String Dim m As Long Dim i As Integer For i = 1 To Len(key) m ...

Global site tag (gtag.js) - Google Analytics