java方法将数据写入log_Java 写 Log

1. 一个最基本的例子

使用Logging框架写Log基本上就三个步骤

引入loggerg类和logger工厂类

声明logger

记录日志

下面看一个例子

48304ba5e6f9fe08f3fa1abda7d326ab.png

//1. 引入slf4j接口的Logger和LoggerFactory

importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;

public classUserService {//2. 声明一个Logger,这个是static的方式,我比较习惯这么写。

private final static Logger logger = LoggerFactory.getLogger(UserService.class);

public booleanverifyLoginInfo(String userName, String password) {//3. log it,输出的log信息将会是:"Start to verify User [Justfly]

logger.info("Start to verify User [{}]", userName);return false;

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

其中的第二步,关于Logger对象是否要声明为静态的业界有过一些讨论,Logback的作者最早是推荐使用对象变量的方式来声明,后来他自己也改变了想法。想详细了解的同学可以去看一下: http://slf4j.org/faq.html#declared_static

两种方式的优劣概述如下:

静态Logger对象相对来说更符合语义,节省CPU,节省内存,不支持注入

对象变量Logger支持注入,对于一个JVM中运行的多个引用了同一个类库的应用程序,可以在不同的应用程序中对同个类的Logger进行不同的配置。比如Tomcat上部署了俩个应用,他们都引用了同一个lib。

2. Logger接口的方法

Logger接口分为俩个版本,一个带Marker版本和一个没带Marker版本的。带Marker版本的我没用过就不介绍了。没带Marker版本的接口方法可以分为以下两组:

2.1 判断Logger级别是否开启的方法

public boolean isTraceEnabled();

public boolean isDebugEnabled();

public boolean isInfoEnabled();

public boolean isWarnEnabled();

public boolean isErrorEnabled();

这 组方法的作用主要是避免没必要的log信息对象的产生,尤其是对于不支持参数化信息的Log框架(Log4j 1, commons-logging)。如下面的例子所示,如果没有加debug级别判断,在Debug级别被禁用的环境(生产环境)中,第二行的代码将没有 必要的产生多个String对象。

if(logger.isDebugEnabled()){

logger.debug("["+resultCount+"]/["+totalCount+"] of users are returned");

}

如果使用了参数信息的方法,在如下代码中,即使没有添加debug级别(第一行)判断,在生产环境中,第二行代码只会生成一个String对象。

if(logger.isDebugEnabled()){

logger.debug("[{}]/[{}] of users in group are returned", resultCount,totalCount);

}

因此,为了代码的可读性,我一般情况下使用参数化信息的方法,并且不做Logger级别是否开启的判断,换句话说,这组方法我一般情况下不会用。

2.2 log信息的方法

2.2.1 方法说明

Logger中有五个级别:track,debug,info,warn,error。对于每个级别,分别有五个log方法,以info级别为例子:

public void info(String msg);

无参数的log方法,例子:

logger.info("开始初始化配置文件读取模块");

输出

201

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值