我有一个简单的自定义日志框架,如下所示:
package something;
import javafx.scene.control.TextArea;
public class MyLogger {
public final TextArea textArea;
private boolean verboseMode = false;
private boolean debugMode = false;
public MyLogger(final TextArea textArea) {
this.textArea = textArea;
}
public MyLogger setVerboseMode(boolean value) {
verboseMode = value;
return this;
}
public MyLogger setDebugMode(boolean value) {
debugMode = value;
return this;
}
public boolean writeMessage(String msg) {
textArea.appendText(msg);
return true;
}
public boolean logMessage(String msg) {
return writeMessage(msg + "\n");
}
public boolean logWarning(String msg) {
return writeMessage("Warning: …Run Code Online (Sandbox Code Playgroud) 我正在以静态上下文的方式寻找JAVA中当前类的"自我"引用,就像在PHP Scope Resolution Operator中一样?
解决方案:超出范围?请注意,这与静态定义相比真的很慢(乘以300):
static Logger LOG = LoggerFactory.getLogger(new RuntimeException().getStackTrace()[0].getClassName());
Run Code Online (Sandbox Code Playgroud)
老式的方式是:
static Logger LOG = LoggerFactory.getLogger(<Classname>.class.getName());
Run Code Online (Sandbox Code Playgroud)
还有其他选择吗?我正在寻找一种将记录器定义放在抽象类中的方法.记录器应该确定它自己调用的类.
我的应用基本上是一个照片浏览器.我的做法(不要评判我,我是java新手)是要ArrayList填充BufferedImages然后将图像添加到JList(向左).
这是我得到一个图像的方式:
private void getFullImage() {
BufferedImage im = null;
ImageReader imageReader = null;
try {
System.out.println("Loading "+original+"...");
String suffix = Utils.getFileExt(original.getName(), "jpg");
@SuppressWarnings("rawtypes")
Iterator readers = ImageIO.getImageReadersBySuffix(suffix);
imageReader = (ImageReader)readers.next();
imageReader.setInput(new FileImageInputStream(original));
im = imageReader.read(0);
imageReader.dispose();
} catch (Exception e)
{
e.printStackTrace();
}
this.img = im;
}
Run Code Online (Sandbox Code Playgroud)
然后,在我获取所有数据后,我会将图像添加到我的JList:
Vector vector = new Vector();
JPanel container = null;
PhotoPanel pp = null;
Photo p = null;
for(int i=0;i<files.length;i++)
{
p …Run Code Online (Sandbox Code Playgroud) 我有一个桌面java应用程序,我预见到Java日志记录就足够了.为了简化这个问题,我使用java全局记录器获取记录器,而不是传递任何特定的记录器名称
Logger logger = Logger.getGlobal();
String logFilePath = Config.INSTANCE.getProperty("logFilePath");
FileHandler fileHandler = new FileHandler(logFilePath);
logger.addHandler(fileHandler);
SimpleFormatter formatter = new SimpleFormatter();
fileHandler.setFormatter(formatter);
Run Code Online (Sandbox Code Playgroud)
如您所见,我还在输出文件路径和格式化程序方面对全局记录器进行了更改.
我的问题是关于全局记录器的范围,它的全局范围是JVM吗?或全局范围的应用程序?如果全局范围在JVM上,我是否应该对共享相同JVM的应用程序产生副作用?提示:我已经完成了这个线程在java.util.logging中,什么是全局记录器?但评论不是我可以利用的.
我想在文本文件中记录失败的条目.
}else System.out.println("not found!");
//Enter entry(log it) in a txt file.
Run Code Online (Sandbox Code Playgroud)
如何在不创建方法的情况下进行此操作?
编辑:我的意思是如果方法更好,那么建议?