编写一个日志注解
时间: 2023-09-03 09:09:53 浏览: 95
在Java中,我们可以使用注解来为类、方法、变量等元素添加一些元数据信息。下面是一个简单的日志注解的示例:
```java
import java.lang.annotation.*;
@Target(ElementType.METHOD) // 该注解只能用于方法
@Retention(RetentionPolicy.RUNTIME) // 该注解在运行时保留
public @interface Log {
String value() default ""; // 日志信息
}
```
通过上述代码,我们定义了一个名为Log的注解,它只能用于方法上,并且在运行时保留。该注解包含一个名为value的属性,用来指定日志信息。
接下来,我们可以在需要打印日志的方法上使用该注解,例如:
```java
public class Demo {
@Log("执行了方法A")
public void methodA() {
// 方法A的实现
}
}
```
在上述示例中,我们在方法methodA上使用了Log注解,并指定了日志信息为“执行了方法A”。接下来,我们可以在方法执行前后打印日志:
```java
public class LogUtil {
public static void log(Method method) {
Log log = method.getAnnotation(Log.class);
if (log != null) {
System.out.println(log.value() + " 开始执行...");
}
// 执行方法
try {
method.invoke();
} catch (Exception e) {
e.printStackTrace();
}
if (log != null) {
System.out.println(log.value() + " 执行结束...");
}
}
}
```
在上述代码中,我们定义了一个名为LogUtil的工具类,其中log方法接受一个Method类型的参数,表示需要打印日志的方法。我们首先通过getAnnotation方法获取该方法上的Log注解,如果存在,则打印日志信息并执行该方法。方法执行完毕后,再次检查Log注解是否存在,如果存在,则打印日志信息表示方法执行结束。
最后,我们可以在调用需要打印日志的方法时,使用LogUtil工具类来实现日志打印:
```java
public class Main {
public static void main(String[] args) {
Demo demo = new Demo();
Method method = Demo.class.getMethod("methodA");
LogUtil.log(method);
}
}
```
在上述代码中,我们首先创建了一个Demo对象,然后通过反射获取methodA方法,并将其传入LogUtil.log方法中。LogUtil.log方法会根据该方法上的Log注解来打印日志信息。