日志

Qt 实现 Logger 日志的显示

两盒软妹~` 提交于 2019-11-29 11:57:33
Qt qDebug or 开源库 基于 Qt qDebug Qt 提供 qInstallMessageHandler(Qt5) 或者 qInstallMsgHandler(Qt4) ,可以对QDebug、QWarning、QError等进行重定向等处理。 可以参考Qt Assistant 的帮助文档,或者参考 Qt之日志输出文件 进行实现。 缺点: 没有尝试过,但是有人不支持多线程,至少需要自己去考虑多线程安全问题 缺点: 如果想要让消息既存档,又同时在窗口Widget中显示,可能会麻烦点 需要自己实现文件大小的判断,以及历史文件的备份 如果只是将日志重定向至某个文件,不需要显示,这方法挺好。推荐。 开源库 QsLog (个人推荐) 简单的日志框架,可以添加多个日志的destination,可以使用Signal/Slot机制方便的将日志输出到Widget。 项目地址: QsLog的Bitbucket地址 QxtLogger QxtLib的一部分,如果也是用QxtLib的其他功能,肯定也会用这个。但是我没用过 项目地址: QxtLogger Class Reference Widget 显示空间的选择 使用QPlainTextEdit (推荐) If you want to limit the total number of paragraphs in a

Mule ESB Http项目转换为Tomcat项目(9) 日志问题处理

蓝咒 提交于 2019-11-29 03:06:33
Mule ESB项目的日志输出有两种方式,可以在流程中添加Logger组件输出日志,也可以在自定义的代码中添加日志输出。Mule ESB日志使用Log4j2库进行输出,Mule ESB 企业版使用的log4j2版本是2.1。 我们在ESB项目中拖入一个Logger控件,输出经过Transformer转化后的Json 报文。 这里Logger控件里的Message内容为#[message.payloadAs(java.lang.String)],使用的是MEL(Mule Expression Language),等效于message.getPayloadAsString() 拖拽Logger控件后,在项目的src/main/resources目录下生成了log4j2.xml文件,用于配置Log4j2的日志输出 log4j2.xml的内容如下: <?xml version="1.0" encoding="utf-8"?> <Configuration> <Appenders> <RollingFile name="file" fileName="${sys:mule.home}${sys:file.separator}logs${sys:file.separator}testproject.log" filePattern="${sys:mule.home}${sys:file

Java日志性能那些事

懵懂的女人 提交于 2019-11-28 16:48:29
说到Java日志,大家肯定都会说要选择合理的日志级别、合理控制日志内容,但是这仅是万里长征第一步……哪怕一些DEBUG级别的日志在生产环境中不会输出到文件中,也可能带来不小的开销。我们撇开判断和方法调用的开销,在 Log4J 2.x的性能文档 中有这样一组对比: logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i])); logger.debug("Entry number: {} is {}", i, entry[i]); 上面两条语句在日志输出上的效果是一样的,但是在关闭DEBUG日志时,它们的开销就不一样了,主要的影响在于字符串转换和字符串拼接上,无论是否生效,前者都会将变量转换为字符串并进行拼接,而后者则只会在需要时执行这些操作。Log4J官方的测试结论是两者在性能上能相差两个数量级。试想一下,如果某个对象的toString()方法里用了ToStringBuilder来反射输出几十个属性时,这时能省下多少资源。 因此,某些仍在使用Log4J 1.x或Apache Commons Logging(它们不支持{}模板的写法)的公司都会有相应的编码规范,要求在一定级别的日志(比如DEBUG和INFO)输出前增加判断: if (logger.isDebugEnabled()) { logger

spring AOP实现业务日志管理

谁说我不能喝 提交于 2019-11-27 17:34:06
我们知道,在一个系统中,业务操作日志对我们很重要。那么以往我们更多的时候是写个方法,然后哪个模块需要加入日志,就引入这个接口。但是这种其实冗余了很多代码。今天我简单给大家介绍下采用spring AOP来统一帮我们处理业务操作日志。 首先看下我的日志表的设计: DROP TABLE IF EXISTS `t_log`; CREATE TABLE `t_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL COMMENT '用户名', `create_date` varchar(20) DEFAULT NULL COMMENT '发生日期', `module_name` varchar(2000) DEFAULT '' COMMENT '功能模块', `operation` varchar(255) DEFAULT NULL COMMENT '用户所做的操作', `work_time` int(11) DEFAULT NULL COMMENT '耗时', `oper_result` varchar(255) DEFAULT NULL COMMENT '操作结果', `user_ip` varchar(255) DEFAULT NULL COMMENT '用户ip',

在Laravel中使用事件记录SQL查询到日志

时间秒杀一切 提交于 2019-11-27 13:49:05
在本文中,我们将讨论如何处理Laravel中的查询日志记录。 假设你在阅读本文时已经非常熟悉Laravel。 Laravel可以选择将所有在当前请求中运行的查询记录在内存中。 有一些方法可用于此。 你可以查看 官方文档之数据库 。 查询记录 如果,你想要将日志文件保存在 storage/logs 目录中。需要更新: app/Providers/AppServiceProvider.php 里的 boot() 函数。 <?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use DB; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { // 新增代码 DB::listen(function($query) { Log::info( $query->sql, $query->bindings, $query->time ); }); } /** * Register any application services. * * @return void */ public

MySQL优化:使用慢查询日志定位效率较低的SQL语句

北战南征 提交于 2019-11-27 11:45:29
MySQL 通过 慢查询日志 定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含所有执行时间超过long_query_time 秒的SQL语句的日志文件,通过查看这个日志文件定位效率较低的SQL 。 慢查询日志在查询结束以后才记录,所以在应用反映执行效率出现问题的时候查询慢查询日志并不能定位问题,可以使用show processlist命令查看当前MySQL在进行的线程,包括线程的状态、是否锁表等,可以实时地查看SQL 的执行情况,同时对一些锁表操作进行优化。 下面我们举例说明一下,如何通过慢查询日志定位执行效率低的SQL 语句: 开启慢查询日志,配置样例: [mysqld] log-slow-queries 在my.cnf 配置文件中增加上述配置项并重启mysql服务,这时mysql慢查询功能生效。慢查询日志将写入参数DATADIR(数据目录)指定的路径下,默认文件名是host_name-slow.log 。 和错误日志、查询日志一样,慢查询日志记录的格式也是纯文本,可以被直接读取。下例中演示了慢查询日志的设置和读取过程。 首先查询一下 long_query_time 的值 。 mysql> show variables like 'long%'; +-----------------+----

log4j直接输出日志到flume

℡╲_俬逩灬. 提交于 2019-11-27 06:08:48
log4j直接输出日志到flume 此jar是由Cloudera的CDH发行版提供的一个工具类,通过配置,可以将log4j的日志直接输出到flume,方便日志的采集。 在CDH5.3.0版本中是:flume-ng-log4jappender-1.5.0-cdh5.3.0-jar-with-dependencies.jar 所在目录是:/opt/cloudera/parcels/CDH/lib/flume-ng/tools/ 具体使用示例 log4j配置(log4j.properties) log4j.category.com.xxx=INFO,console,flume log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.target=System.out log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern="%d{yyyy-MM-dd HH:mm:ss} %p [%c:%L] - %m%n log4j.appender.flume = org.apache.flume.clients.log4jappender