资讯专栏INFORMATION COLUMN

jfinal 日志log4j使用

Little_XM / 2536人阅读

摘要:本文使用环境如何使用导入包将官网提供的包导入项目配置文件在项目配置文件中配置如下内容即可生效生成日志文件运行项目后将在根目录下生成的文件。

本文使用环境

win7

Idea 14.1.4

jfinal 2.0

1.jfinal如何使用log4j

a.导入jar包

将官网提供的log4j.jar包导入项目

b.配置文件

在项目配置文件(project/src/log4j.properties)中配置如下内容即可生效:

log4j.rootLogger=INFO, stdout, file
log4j.appender.stdout.Target=System.out
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n

# Output to the File
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=./myapp.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n

# Druid
log4j.logger.druid.sql=warn,stdout
log4j.logger.druid.sql.DataSource=warn,stdout
log4j.logger.druid.sql.Connection=warn,stdout
log4j.logger.druid.sql.Statement=debug,stdout
log4j.logger.druid.sql.ResultSet=warn,stdout

c.生成日志文件

运行项目后将在project根目录下生成myapp.log的文件。
2.jfinal 异常记录到log4j 2.1 扩展异常类ExceptionIntoLogInterceptor
package interceptor;

import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.JFinal;
import com.jfinal.log.Logger;

/**
 * 异常处理日志 全局拦截器
 * Created by rener on 2015/12/7.
 */
public class ExceptionIntoLogInterceptor implements Interceptor {

    private static final Logger log = Logger.getLogger(ExceptionIntoLogInterceptor.class);

    @Override
    public  void intercept(Invocation invocation){
        //Controller controller=invocation.getController();
        //HttpServletRequest request=controller.getRequest();
        try{
            invocation.invoke(); //一定要注意,把处理放在invoke之后,因为放在之前的话,是会空指针
        }catch (Exception e){
            //log 处理
            logWrite(invocation, e);
        }finally {
            //记录日志到数据库,暂未实现
            try{

            }catch (Exception ee){

            }
        }


    }


    private void logWrite(Invocation inv,Exception e){
        //开发模式
        if (JFinal.me().getConstants().getDevMode()){
            e.printStackTrace();
        }
        StringBuilder sb =new StringBuilder("
---Exception Log Begin---
");
        sb.append("Controller:").append(inv.getController().getClass().getName()).append("
");
        sb.append("Method:").append(inv.getMethodName()).append("
");
        sb.append("Exception Type:").append(e.getClass().getName()).append("
");
        sb.append("Exception Details:");
        log.error(sb.toString(),e);

    }
}
2.2 配置AppConfig.java中的configInterceptor注册全局拦截
 @Override
    public void configInterceptor(Interceptors interceptors){
        //全局拦截器,对所有请求拦截

        //添加控制层全局拦截器
        //interceptors.addGlobalActionInterceptor(new GlobalActionInterceptor());
        interceptors.addGlobalActionInterceptor(new ExceptionIntoLogInterceptor());
        //添加业务层全局拦截器
        //interceptors.addGlobalServiceInterceptor(new GlobalServiceInterceptor());
        interceptors.addGlobalServiceInterceptor(new ExceptionIntoLogInterceptor());

        //兼容老版jfinal写法
        //interceptors.add(new GlobalActionInterceptor());
    }

启用项目后,发生异常将记录到日志文件。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64756.html

相关文章

  • 快速上手JFinal

    摘要:是国产的框架,由五大部分组成。本文通过一个例子上手,旨在熟悉中各组件的用法。指的是表名,指的是主键数据库连接池使用的是,还支持。默认访问方法,这点类似于如果之前有基础,上手会非常快。映射在上使用了校验拦截器,使用了权限拦截器。 JFinal是国产的MVC框架,由 Handler、Interceptor、Controller、Render、Plugin 五大部分组成。本文通过一个例子上手...

    susheng 评论0 收藏0
  • JFinal-event v2.3.0 发布,简化 Event 事件类

    摘要:和冲突,去掉对支持,标记为弃用。初始化插件初始化插件设置为异步,默认同步,或者使用自定义线程池。为子类排序,数值越小越先执行,默认为异步执行,需要插件开启或者自定义线程池。 说明 JFinal-event 2.x 参考 Spring 4.2.x 中 Event 的使用方式而生,为 JFinal 用户带来更多方便。其核心目标是深层次解耦,为您节约更多时间,去陪恋人、家人和朋友 :) 年初...

    ashe 评论0 收藏0
  • 强推!大牛程序员必备的Java日志框架,性能无敌

    摘要:本文要来分享给大家程序员最常用的日志框架组件。没有基础的同学也不要着急,这套教程覆盖了目前所有的日志框架,只要你学,就一定用得到,先收藏,以备不时之需。 作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用、WEB应用以及移动应用。然而日志系统是一个成熟Java应用所必不可少的。在开发和调试阶段,日志可以帮...

    zebrayoung 评论0 收藏0
  • Log4j各级别日志重复打印的问题

    摘要:今天在配置日志的时候,发现日志重复打印的问题。把配置文件修改成如下日志控制台日志级别日志级别日志级别日志通过以上配置模板即可解决各级别日志重复打印的问题。 今天在配置Log4j日志的时候,发现日志重复打印的问题。网上查了很多资料,发现介绍Log4j配置的文章数量不少,但提到这个问题的文章却寥寥,解决了自己的问题以后,赶紧记录一下。 原文地址:http://www.jianshu.com...

    tylin 评论0 收藏0
  • spring进步 -- log4j的学习

    摘要:建议只使用四个级别,优先级从高到低分别是。比如在这里定义了级别,只有等于及高于这个级别的才进行处理,则应用程序中所有级别的日志信息将不被打印出来。可同时指定多个输出目的地。 一直感觉到log4j是使用比较混乱,今天抽空整理一下,以后方便使用 一、引用apache.log4j 使用maven进行lo4j的引用 log4j log4j 1.2.17 其他版本也...

    edgardeng 评论0 收藏0

发表评论

0条评论

Little_XM

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<