
正文
java打日志代码 java写日志文件
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java怎么运用切面编程生成日志
1.首先创建一个自定义注解拦截Controller类,代码如下
/**
* 自定义注解 拦截Controller
*/
@Target({ ElementType.PARAMETER, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ControllerLog {
String desc() default "";//标示默认打印空
}
2.创建一个打印日志的切面类,引入切面注解@Aspect,
新建方法代码如下:
// Controller层切点
@Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)")
public void recordLog() {
}
@Around("recordLog()")
public Object around(ProceedingJoinPoint pjp) throws Throwable {
// ExPatternParser.initLogger();
long start = System.currentTimeMillis();
Object[] args = pjp.getArgs();
String remark = this.getControllerMethodDescription(pjp);
Object retVal = null;
try {
retVal = pjp.proceed();
} catch (Throwable e) {
// TODO Auto-generated catch block
logger.error("请求失败" + e.toString(),e);
remark = remark + "。Exception Cause By " + e.toString();
throw e;
}finally{
long end = System.currentTimeMillis();
long cost = end - start;
//打印访问日志
// Controller中所有方法的参数,前两个分别为:Request,Response
if(args != null args.length 0){
Object o = args[0];
if(o instanceof HttpServletRequest){
HttpServletRequest request = (HttpServletRequest) args[0];
PrintLog.visit(request, cost,remark);
}
}
}
return retVal;
}
/**
* 获取注解中对方法的描述信息 用于Controller层注解
* @param joinPoint切点
* @return 方法描述
* @throws Exception
*/
public static String getControllerMethodDescription(ProceedingJoinPoint joinPoint)
throws Exception {
String targetName = joinPoint.getTarget().getClass().getName();
String methodName = joinPoint.getSignature().getName();
Object[] arguments = joinPoint.getArgs();
Class targetClass = Class.forName(targetName);
Method[] methods = targetClass.getMethods();
String description = "";
for (Method method : methods) {
if (method.getName().equals(methodName)) {
Class[] clazzs = method.getParameterTypes();
if (clazzs.length == arguments.length) {
ControllerLog controllerLog = method.getAnnotation(ControllerLog.class);
if(controllerLog !=null){
description =
controllerLog.desc();
}
break;
}
}
}
return description;
}
3.然后在每个Controller类上加上注解:
@ControllerLog(desc = "要 打印的日志内容")
相关问答
Q1: java打印日志的几种方式
在Java 中实现记录日志的方式有很多种java打日志代码, 下面给你简单介绍四种java打日志代码:
最简单的方式java打日志代码,就是system.println.out(error) ,这样直接在控制台打印消息了。
Java.util.logging ; 在JDK 1.4 版本之后,提供了日志的API ,可以往文件中写日志了。
log4j , 最强大的记录日志的方式。 可以通过配置 .properties 或是 .xml 的文件, 配置日志的目的地,格式等等。
commons-logging, 最综合和常见的日志记录方式, 经常是和log4j 结合起来使用。
Q2: Java历史操作日志
使用log4j。
将日志输出级别定位debug,如果你用的是jdbc,就在sql后面输入日志。
如果用的是mybatis,在log4j的配置文件中加入下面代码,可以将mybatis执行的sql直接打印出来
#mybatis在log4j中输出SQL
log4j.logger.springframework=DEBUG
log4j.logger.ibatis=DEBUG
log4j.logger.ibati *** on.jdbc.SimpleDataSource=DEBUG
log4j.logger.ibati *** on.jdbc.ScriptRunner=DEBUG
log4j.logger.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
Q3: java怎么写日志记录,最好是完整的代码!谢啦!
常用2种方式,具体你可以去自己写,建议,编程前期主要靠你自己琢磨,他人给你思路即可。
1.用简单的读写文件实现,写一个写文件的共用类,每次把日志写到文件里即可。
2.用开源免费的日志工具,如log4j。
祝你成功!!
Q4: 如何在java程序中打log
Java的Log是一个非常强大的写日志的工具包,程序员可以随时把一些想要记录的信息输出到本地文件,可以用于观察程序运行状况等,代码如下:
import org.apache.log4j.FileAppender;
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.SimpleLayout;
public class ApacheLog {
public static void main(String args[]) {
Logger logger = Logger.getLogger(ApacheLog.class);
SimpleLayout layout = new SimpleLayout();
FileAppender appender = null;
try {
appender = new FileAppender(layout, "myApacheLog.log", false);
} catch (Exception e) {
}
logger.addAppender(appender);
// Set the logger level to Level.INFO
logger.setLevel(Level.INFO);
// This request will be disabled since Level.DEBUG Level.INFO.
logger.debug("This is debug.");
// These requests will be enabled.
logger.info("This is an info.");
logger.warn("This is a warning.");
logger.error("This is an error.");
logger.fatal("This is a fatal error.");
}
}
java打日志代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java写日志文件、java打日志代码的信息别忘了在本站进行查找喔。






