将stderr和stdout记录到控制台

时间:2015-08-27 15:22:12

标签: java logging

我想将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做任何建议吗?

2 个答案:

答案 0 :(得分:1)

您希望您的通话看起来像这样:

logger.error("Sorry,...", ex);

Take a look at the javadoc

如果您不想编辑java文件本身,可以使用shell重定向:

./script_invoke_java &> output.log

答案 1 :(得分:0)

也许org.apache.logging.log4j.io.LoggerPrintWriter适合你。您可以创建它的实例并将其设置为System.outSystem.err。该类将所有内容转发到具有特定参数的log4j记录器,您可以使用log4j将您喜欢的内容放在文件中。