gpt4 book ai didi

java - 如何为log4j编写LogFactory?

转载 作者:行者123 更新时间:2023-12-01 12:45:34 25 4
gpt4 key购买 nike

我一直在进行日志记录方面的培训。我使用 log4j 库进行日志记录,并且我是设计模式的新手。我想问的是如何创建一个工厂来获取配置的记录器?

最佳答案

这可能对你有帮助。

public class LogFactory {

public static final String TOOLKIT = "logging.toolkit";
public static final String TOOLKITCLASS = "logging.toolkit.class";
public static final String Log4j = "log4j";

public static LogAdapter logAdapter;
public static Object lock = new Object();

/**
* Get specific Log implementation
* @param name
* @return
*/
public static Log getLog(final String name) {

if (logAdapter == null) {

synchronized (lock) {

String toolkitClass = System.getProperty(TOOLKITCLASS);

if (toolkitClass != null) {
System.out.println("\n Logging toolkitClass:" + toolkitClass + "\n\n");
logAdapter = createObject(toolkitClass);
}
else {
String toolkit = System.getProperty(TOOLKIT);
if (toolkit == null) {
toolkit = Log4j;
}
if (toolkit.equalsIgnoreCase(Log4j)) {
logAdapter = new Log4jAdapter();
}
}

//Initialize adapter
logAdapter.init();
}
}

return logAdapter.getLog(name);
}


public static Log getLog(final Class<?> clazz) {

return LogFactory.getLog(clazz.getName());
}


/**
* Create an instance of wrapper class using reflection
* @param className
* @return
*/
private static LogAdapter createObject(final String className) {

Object o = null;

try {
Class<?> cl = Class.forName(className);
Constructor<?> c = cl.getConstructor();
o = c.newInstance();
}
catch (Exception e) {
e.printStackTrace();
}
return (LogAdapter) o;
}

}

关于java - 如何为log4j编写LogFactory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24733960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com