我想将stderr和stdout移动到控制台并将它们移动到某个文件。
假设在我的java类中我编写了siome logger语句.. Info,WARN .. 一些例外(抛出新的运行时异常)即将发生,它将进入stderr
我从脚本调用java类并将其移动到某个文件。
我希望该文件包含记录器和异常。
import org.apache.log4j.Logger;
公共类HelloExample2 {
final static Logger logger = Logger.getLogger(HelloExample2.class);
public static void main(String[] args) {
HelloExample2 obj = new HelloExample2();
try{
obj.divide();
}catch(ArithmeticException ex){
System.out.println("yeah buddy .. puchi");
logger.error("Sorry, something wrong!");
ex.printStackTrace();
}
}
private void divide(){
int i = 10 /0;
}
}
我希望ERROR日志和异常都打印到某个文件
我正在运行我的程序,如: - ./script_invoke_java> somefile.log
此文件包含记录器和异常(我正在处理异常system.out正在进入文件中)。 我想用log4J做任何建议吗?
答案 0 :(得分:1)
您希望您的通话看起来像这样:
logger.error("Sorry,...", ex);
如果您不想编辑java文件本身,可以使用shell重定向:
./script_invoke_java &> output.log
答案 1 :(得分:0)
也许org.apache.logging.log4j.io.LoggerPrintWriter适合你。您可以创建它的实例并将其设置为System.out
和System.err
。该类将所有内容转发到具有特定参数的log4j记录器,您可以使用log4j将您喜欢的内容放在文件中。