logback.xml生成的日志文件如何存储到mysql数据库中

logback.xml生成的日志文件如何存储到mysql数据库中,第1张

您好,提示:

MySQL中的error log日志文件,其实功能跟ORACLE中的alert极为相似,不过由名称也看得出MySQL果然还是嫩了点儿,error logs中即不全是error信息,也并非所有error都被记入log,这名称就有点儿名不副实了。还是ORACLE高明--alert,就是提示你要注意,咋理解都没毛病。

在某些 *** 作系统上运行的mysql崩溃时,会将堆栈的跟踪信息(stack trace)抛出到错误日志文件中,这些跟踪信息比较有利于故障排查。

启用mysqld时附加--log-error参数(或配置log-error系统环境变量),指定错误日志的路径及文件名,如不指定的话,默认文件名为[host_name].err,保存在mysql的data文件夹下。执行FLUSH LOGS命令后,mysql会将当前错误日志文件附加-old保存,而且创建一个新的空错误日志文件(仅限指定--log-error的情况下会自动创建新文件)。

提示:

Windows环境中,事件和错误消息也会被写入windows的事件日志中,以应用程序的形式保存,并可能被标记为警告(Warning)或注意(Note),不过信息类的消息不会写入事件日志。

--log-warnings参数(或log-warnings系统环境变量)用来控制警告信息是否记录,默认值为1即启用,指定为0时表示禁用。如果指定该参数值大于1,则连接失败的消息也会写入错误日志。

使用mysqld_safe命令启动mysqld,mysqld_safe会将错误消息写到日志文件或者系统日志,在5.1.20版本之前,mysqld_safe的 *** 作记录到文件;从5.1.20版本开始,mysqld_safe提供了两个新增错误日志选项:--syslog和--skip-syslog。从5.1.21版本开始,默认的不记录日志选项为--skip-syslog,该选项兼容5.1.20版本之前的错误日志行为。要明确指定输出的错误日志文件,就通过mysqld_safe启动服务时附加--log-error[=file_name]参数,如果要使用syslog,则指定--syslog参数。

对于记录到syslog的消息,来自mysqld_safe和mysqld的消息会分别打上"mysqld_safe"或"mysqld"的标签,从5.1.21版本开始,还可以通过--syslog-tag=[tag]的方式指定标签的名称,修改后实际记录的标签形式会变成"mysql_safe-[tag]"和"mysqld-[tag]"。

如何是使用mysqld_safe命令启动mysqld进程,并且mysqld意外崩溃,则mysqld_safe将尝试重新启动mysqld进程,并且向错误日志中记录"restarted mysqld"信息。

MySQL存储错误日志的方法有:

1. 在MySQL的配置文件中添加log_error参数,将错误日志保存到指定文件中;

2. 在MySQL的配置文件中添加general_log参数,将所有SQL语句的执行情况记录到指定文件中;

3. 在MySQL的配置文件中添加slow_query_log参数,将慢查询的语句记录到指定文件中;

4. 在MySQL的配置文件中添加log_queries_not_using_indexes参数,将没有使用索引的查询语句记录到指定文件中;

5. 使用MySQL的SHOW WARNINGS语句,将错误信息记录到表中;

6. 使用MySQL的log_bin参数,将所有更改的日志记录到指定的文件中;

7. 使用MySQL的binlog_format参数,将更改的日志记录到指定的文件中;

8. 使用MySQL的innodb_force_recovery参数,将恢复日志记录到指定的文件中;

9. 使用MySQL的innodb_buffer_pool_dump参数,将缓冲池中的日志记录到指定的文件中;

10. 在MySQL中创建存储过程,将错误日志保存到表中。

1、修改/etc/syslog-ng/syslog-ng.conf,添加

CODE:

source s_remote {

udp(ip(0.0.0.0) port(514))

}

destination r_mysql {

program("/usr/bin/mysql -usyslogadmin -psyslogadmin syslog </var/log/mysql.pipe")

pipe("/var/log/mysql.pipe"

template("INSERT INTO logs

(host, facility, priority, level, tag, datetime, program, msg)

VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC',

'$PROGRAM', '$MSG' )\n") template-escape(yes))

}

log { source(s_remote)destination(r_mysql)}

2、建立mysql.pipe文件按

#mkfifo /var/log/mysql.pipe

3、重新启动syslog-ng

#/etc/init.d/syslog-ng restart

这种方法如果结合phpsyslogng一起使用,就可以在浏览器中对日志进行进一步的过滤和查看,非常方便。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8629880.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存