我搜索了StackOverflow和网络,以获取如何使用Apache Log4j 2来解析现有日志文件的示例.我已经读过Apache有一个子项目"Chainsaw",它是日志文件的查看器,它还应该有一个可以用来自己解析日志条目的API.但是,我还没有找到任何关于此的好读数,我在Apache Log4j 2中找不到Chainsaw.
我想要的是以下(伪代码/ API):
String existingLogEntry = "2014-01-20 14:48:00,000 [thread-0] DEBUG (MyClass.java) - Some message";
String logPattern = "<substitute this with Log4j pattern that matches the above log entry>";
LogEntry entry = Parser.parse(logPattern, existingLogEntry);
System.out.println("Date: " + entry.getDate());
System.out.println("Time: " + entry.getTime());
System.out.println("Thread: " + entry.getThread());
System.out.println("Log level: " + entry.getLogLevel());
System.out.println("Class: " + entry.getClassName());
System.out.println("Message: " + entry.getMessage());
Run Code Online (Sandbox Code Playgroud)
所以我需要知道:
还应该可以提取自定义值/ MDC/Markes.
如果我根据ubuntu:14.04图像创建一个新的Docker 镜像并运行它:
docker run -i --name="TEST" ubuntu:14.04 /bin/bash
Run Code Online (Sandbox Code Playgroud)
然后我将有一个简单的Ubuntu与Bash运行,但我不会得到一个提示,文件/文件夹的自动完成不起作用.此外,如果我尝试使用编辑文件vi,终端将破坏屏幕上显示的所有内容,箭头也不会工作.
那么如何从ubuntu创建一个新的图像:14.04,来自Ubuntu Desktop发行版的'普通'终端的'普通'类似Bash的功能正在工作,所以我有相同的彩色提示,自动完成文件/文件夹正在工作,vi也按预期工作?
编辑:我在Windows上运行boot2docker,如果这有任何区别!?
我需要有以下声明:
private static String[] BASE = new String[] { "a", "b", "c" };
private static String[] EXTENDED = BASE + new String[] { "d", "e", "f" };
Run Code Online (Sandbox Code Playgroud)
第一行声明一个包含三个(或更多)字符串值的字符串数组.第二行应声明一个字符串数组,其中包含BASE中的所有字符串值,然后添加三个(或更多)字符串值.
这可能吗?如果是的话......怎么样?