log4j.rootLogger=DEBUG,DATABASE log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=
log4j.appender.DATABASE.sql=INSERT INTO logs (Message) valueS ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=
log4j.appender.DATABASE.sql=INSERT INTO logs (Message) valueS ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
解决方案 »
- java,举例说明如何为窗口设置某种布局?
- 为什么我在eclipse里面运行程序图片可以看见。在命令行或者是打成Jar包的情况下却是空白一片得?
- java.lang.OutOfMemoryError: Java heap space
- oracle10g 里jdbc 批处理executeBatch的返回值 多少才代表正确
- 一个排序题目
- 关于基础!!呵呵!!
- [求助]jbuilder8中如何用RetroGuard混淆器来混淆jar文件?
- 请问关于远程连接DB2的问题
- 这说的是什么呀,(一个题目),我怎么看不懂?
- 诸位神仙给我一个学习“JAVA”的理由?
- 怎么使用SWT呢,在eclipse里面编译时候出现这个错误,怀疑和本底接口有关系,该怎么解决呢?
- 关于程序中CA证书认证以及利用了CA证书的系统的认证问题,请知道的朋友帮忙
----------------------------------------
# 定义输出端
log4j.rootLogger = INFO, A3# 定义A3输出到数据库
log4j.appender.A3 = org.apache.log4j.jdbc.JDBCAppender
log4j.appender.A3.BufferSize = 40
log4j.appender.A3.Driver = com.microsoft.jdbc.sqlserver.SQLServerDriver
log4j.appender.A3.URL = jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=nepalon
log4j.appender.A3.User = sa
log4j.appender.A3.Password =
log4j.appender.A3.layout = org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern = INSERT INTO log4j (createDate, thread, priority, category, message) values(getdate(), '%t', '%-5p', '%c', '%m')
<appender name="access_db_log" class="org.apache.log4j.jdbc.JDBCAppender">
<param name="Driver" value="oracle.jdbc.driver.OracleDriver" />
<param name="Sql" value="INSERT INTO ak(Timestamp,Userid, Officeid, AccesstypeExtstring) VALUES (?,?,?)" />
<param name="User" value="username" />
<param name="URL" value="jdbc:oracle:thin:@192.168.99.16:1521:maojs" />
<param name="Password" value="pwd" />
<param name="BufferSize" value="2" />
</appender>
特别是如何将values中的?,赋值呢?
然后放到classes下就能自动识别了
不过我觉得像放到数据库里面的数据最好还是先识别一下
看看那些是有用的那些不是
在程序中如何引用你随便找个关于 log4j 的参考文档都有讲,这里也不能一两句说完.
字段里面,如果你想写入不同的字段,你必须自己实现log4j的org.apache.log4j.Appender接口。
private static final Logger log = Logger.getLogger(ServiceController.class);
调用
log.info("Hello World.");
log.debuf("Hello World.");
你的信息就只能写为一个字符串,它就是“%m”。如果要区分%m里面的信息,只能自己实现Appender。
http://logging.apache.org/log4j/docs/api/org/apache/log4j/jdbc/JDBCAppender.html参考下面文章:
http://blog.yesky.com/Blog/tiantian911/archive/2005/02/15/74717.html
Logger loger=Loger.getIntance("....")
.....
这里该如何使得配置文件中的sql中的?换成方法传进来得具体的值呢?
}
Logger loger=Loger.getIntance("....")
loger.info("已经成功加载.");
}
log4j.properties 放在同一个目录就可以...另外补一句,用过 log4j 吗?
也就是说,你不可能定义一个appender,只在某种情况下使用,
这是不可能的。而且,你需要的格式,还需要自己实现Appender接口,
太麻烦了。建议放弃。
为例:数据库中新建表:log4j (
createDate,
thread,
priority,
category,
message)每写一条log4j的消息(即 log4j.info("kkk")),在 log4j 表中加入一行, "kkk"会添加在 message 列中,其它的自动补上.你要是将"kkk" 变成 "userid=222 info=成功登录" 也是可以变通的...
但你要是想直接将信息添加到某个现成表AA中的一列中,
直接将 log4j 表换成AA表,并指定某一列名.
但这是不能判断加在哪一条已有记录的后面, 是新生成的...
配置文件:
<appender name="access_Log_JDBC" class="org.apache.log4j.jdbc.JDBCAppender">
<param name="Driver" value="oracle.jdbc.driver.OracleDriver" />
<param name="URL" value="jdbc:oracle:thin:@192.168.99.213:1521:akapi" />
<param name="user" value="accesslog" />
<param name="password" value="log" />
<param name="sql" value="INSERT INTO t(date,user,b,c) VALUES (%d, '%X{user}', '%X{b}', '%m')" />
<param name="BufferSize" value="1" />
</appender> <category name="accesslog_category">
<priority value="debug" />
<appender-ref ref="access_Log_JDBC" />
<appender-ref ref="CONSOLE" />
</category>
通过MDC访问log的例子程序:
public class AccessLogFactory {
private static final String ACCESSLOG_CATEGORY = "accesslog_category";
static{
DOMConfigurator.configure("./conf/log4j.xml");
} public static Log getLog() {
Log logger = null;
try {
logger = LogFactory.getLog(ACCESSLOG_CATEGORY);
} catch (LogConfigurationException e) {
e.printStackTrace();
}
return logger;
}
public static void main(String[] args){
Log logger = AccessLogFactory .getLog();
String msg = "b03";
String user = "u03";
String b = "b03";
MDC.put("user", user); //和配置文件中的%X{user}对应
MDC.put("b", b); //和配置文件中的%X{b}对应
logger.error(msg); //和配置文件中的%m对应
msg = "b04";
user = "u04";
b = "b04";
MDC.put("user ", user );
MDC.put("b", b);
logger.error(msg);
}
}