使用logstash2.3.4从IBMBlueMix获取完整的Java堆栈跟踪

使用logstash2.3.4从IBMBlueMix获取完整的Java堆栈跟踪,java,log4j,cloud,logstash,ibm-cloud,Java,Log4j,Cloud,Logstash,Ibm Cloud,我对IBM Bluemix和Logstash非常陌生 我的应用程序基于Spring Boot+Log4j,它被部署到ibmbluemix中 目标: 读取整个java堆栈跟踪+BlueMix日志并写入本地Linux服务器中的文件 我不想使用弹性搜索&Kibana。我认为这对我的要求太过分了。我不想要花哨的GUI,而是一个包含所有日志信息的基本文本文件 我至今所做的: 2016-07-15T19:31:34.184-0400[App/0]OUT23:31:34.183 [36m[http-nio-

我对IBM Bluemix和Logstash非常陌生

我的应用程序基于Spring Boot+Log4j,它被部署到ibmbluemix

目标:

读取整个java堆栈跟踪+BlueMix日志并写入本地Linux服务器中的文件

我不想使用弹性搜索&Kibana
。我认为这对我的要求太过分了。我不想要花哨的GUI,而是一个包含所有日志信息的基本文本文件

我至今所做的:

 2016-07-15T19:31:34.184-0400[App/0]OUT23:31:34.183 [36m[http-nio-61430-exec-10][0;39m [39mDEBUG[0;39m [36mo.s.w.s.m.m.a.ExceptionHandlerExceptionResolver[0;39m [30m- Resolving exception from handler [public org.springframework.http.ResponseEntity<?> com.abc.xyx.rest.TaskController.getTasks(org.springframework.web.context.request.WebRequest)]: java.lang.IllegalArgumentException: Invalid enum name:Other in com.abc.xyx.service.task.TaskType
2016-07-15T19:31:34.187-0400[App/0]OUT[0;39m23:31:34.186 [36m[http-nio-61430-exec-10][0;39m [39mDEBUG[0;39m [36mo.s.b.f.s.DefaultListableBeanFactory[0;39m [30m- Returning cached instance of singleton bean 'exceptionHandlingAdvice'
2016-07-15T19:31:34.189-0400[App/0]OUT[0;39m23:31:34.189 [36m[http-nio-61430-exec-10][0;39m [39mDEBUG[0;39m [36mo.s.w.s.m.m.a.ExceptionHandlerExceptionResolver[0;39m [30m- Invoking @ExceptionHandler method: public void com.abc.xyx.rest.ExceptionHandlingAdvice.systemException(java.lang.Exception)
2016-07-15T19:31:34.193-0400[App/0]OUT[0;39m23:31:34.192 [36m[http-nio-61430-exec-10][0;39m [1;31mERROR[0;39m [36mc.r.t.r.ExceptionHandlingAdvice[0;39m [30m- Unexpected system exception
2016-07-15T19:31:34.193-0400[App/0]OUT[0;39mjava.lang.IllegalArgumentException: Invalid enum name:Other in com.abc.xyx.service.task.TaskType
2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.TaskUtils.getEnum(TaskUtils.java:30) ~[xyx-core-1.0-SNAPSHOT.jar:na]
2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.Task.init(Task.java:179) ~[xyx-core-1.0-SNAPSHOT.jar:na]
2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.TaskService.searchOnePageTasks(TaskService.java:558) ~[xyx-core-1.0-SNAPSHOT.jar:na]
2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.Task.<init>(Task.java:93) ~[xyx-core-1.0-SNAPSHOT.jar:na]
2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.TaskService$$FastClassBySpringCGLIB$$bb02ea04.invoke(<generated>) ~[xyx-core-1.0-SNAPSHOT.jar:na]
2016-07-15T19:31:34.194-0400[App/0]OUT at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
  • 安装和设置日志存储
  • 能够将bluemix日志写入本地服务器中的文件
  • 下面是我的日志存储配置文件由于我需要整个日志,所以我没有使用任何过滤器。(基于我1天的日志存储知识)

    问题:

     2016-07-15T19:31:34.184-0400[App/0]OUT23:31:34.183 [36m[http-nio-61430-exec-10][0;39m [39mDEBUG[0;39m [36mo.s.w.s.m.m.a.ExceptionHandlerExceptionResolver[0;39m [30m- Resolving exception from handler [public org.springframework.http.ResponseEntity<?> com.abc.xyx.rest.TaskController.getTasks(org.springframework.web.context.request.WebRequest)]: java.lang.IllegalArgumentException: Invalid enum name:Other in com.abc.xyx.service.task.TaskType
    2016-07-15T19:31:34.187-0400[App/0]OUT[0;39m23:31:34.186 [36m[http-nio-61430-exec-10][0;39m [39mDEBUG[0;39m [36mo.s.b.f.s.DefaultListableBeanFactory[0;39m [30m- Returning cached instance of singleton bean 'exceptionHandlingAdvice'
    2016-07-15T19:31:34.189-0400[App/0]OUT[0;39m23:31:34.189 [36m[http-nio-61430-exec-10][0;39m [39mDEBUG[0;39m [36mo.s.w.s.m.m.a.ExceptionHandlerExceptionResolver[0;39m [30m- Invoking @ExceptionHandler method: public void com.abc.xyx.rest.ExceptionHandlingAdvice.systemException(java.lang.Exception)
    2016-07-15T19:31:34.193-0400[App/0]OUT[0;39m23:31:34.192 [36m[http-nio-61430-exec-10][0;39m [1;31mERROR[0;39m [36mc.r.t.r.ExceptionHandlingAdvice[0;39m [30m- Unexpected system exception
    2016-07-15T19:31:34.193-0400[App/0]OUT[0;39mjava.lang.IllegalArgumentException: Invalid enum name:Other in com.abc.xyx.service.task.TaskType
    2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.TaskUtils.getEnum(TaskUtils.java:30) ~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.Task.init(Task.java:179) ~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.TaskService.searchOnePageTasks(TaskService.java:558) ~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.Task.<init>(Task.java:93) ~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.TaskService$$FastClassBySpringCGLIB$$bb02ea04.invoke(<generated>) ~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]OUT at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    
    日志存储输出文件“access\u log”不包含Java异常的堆栈跟踪,它只包含该异常的名称

    (部分)来自BlueMix控制台的原始日志:

     2016-07-15T19:31:34.184-0400[App/0]OUT23:31:34.183 [36m[http-nio-61430-exec-10][0;39m [39mDEBUG[0;39m [36mo.s.w.s.m.m.a.ExceptionHandlerExceptionResolver[0;39m [30m- Resolving exception from handler [public org.springframework.http.ResponseEntity<?> com.abc.xyx.rest.TaskController.getTasks(org.springframework.web.context.request.WebRequest)]: java.lang.IllegalArgumentException: Invalid enum name:Other in com.abc.xyx.service.task.TaskType
    2016-07-15T19:31:34.187-0400[App/0]OUT[0;39m23:31:34.186 [36m[http-nio-61430-exec-10][0;39m [39mDEBUG[0;39m [36mo.s.b.f.s.DefaultListableBeanFactory[0;39m [30m- Returning cached instance of singleton bean 'exceptionHandlingAdvice'
    2016-07-15T19:31:34.189-0400[App/0]OUT[0;39m23:31:34.189 [36m[http-nio-61430-exec-10][0;39m [39mDEBUG[0;39m [36mo.s.w.s.m.m.a.ExceptionHandlerExceptionResolver[0;39m [30m- Invoking @ExceptionHandler method: public void com.abc.xyx.rest.ExceptionHandlingAdvice.systemException(java.lang.Exception)
    2016-07-15T19:31:34.193-0400[App/0]OUT[0;39m23:31:34.192 [36m[http-nio-61430-exec-10][0;39m [1;31mERROR[0;39m [36mc.r.t.r.ExceptionHandlingAdvice[0;39m [30m- Unexpected system exception
    2016-07-15T19:31:34.193-0400[App/0]OUT[0;39mjava.lang.IllegalArgumentException: Invalid enum name:Other in com.abc.xyx.service.task.TaskType
    2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.TaskUtils.getEnum(TaskUtils.java:30) ~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.Task.init(Task.java:179) ~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.TaskService.searchOnePageTasks(TaskService.java:558) ~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.Task.<init>(Task.java:93) ~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.TaskService$$FastClassBySpringCGLIB$$bb02ea04.invoke(<generated>) ~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]OUT at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    
    2016-07-15T19:31:34.184-0400[App/0]OUT23:31:34.183[36m[http-nio-61430-exec-10][0;39m[39mDEBUG[0;39m[36mo.s.w.s.m.m.a.ExceptionHandlerExceptionResolver[0;39m[30m-从处理程序解析异常[public org.springframework.http.responseEntitycom.abc.xyx.rest.TaskController.getTasks(org.springframework.web.context.request.WebRequest)]:java.lang.IllegalArgumentException:无效的枚举名称:com.abc.xyx.service.task.TaskType中的其他
    2016-07-15T19:31:34.187-0400[App/0]OUT[0;39m23:31:34.186[36m[http-nio-61430-exec-10][0;39m[39mDEBUG[0;39m[36mo.s.b.f.s.DefaultListableBeanFactory[0;39m[30m-返回singleton bean'exceptionHandlingAdvice'的缓存实例
    2016-07-15T19:31:34.189-0400[App/0]OUT[0;39m23:31:34.189[36m[http-nio-61430-exec-10][0;39m[39mDEBUG[0;39m[36mo.s.w.s.m.m.a.ExceptionHandlerExceptionResolver[0;39m[30m-调用@ExceptionHandler方法:public void com.abc.xyx.rest.ExceptionHandlingAdvice.systemException(java.lang.Exception)
    2016-07-15T19:31:34.193-0400[App/0]OUT[0;39m23:31:34.192[36m[http-nio-61430-exec-10][0;39m[1;31mERROR[0;39m[36mc.r.t.r.异常处理建议[0;39m[30m-意外系统异常
    2016-07-15T19:31:34.193-0400[App/0]OUT[0;39mjava.lang.IllegalArgumentException:无效的枚举名称:com.abc.xyx.service.task.TaskType中的其他
    2016-07-15T19:31:34.194-0400[App/0]在com.abc.xyx.service.task.TaskUtils.getEnum(TaskUtils.java:30)~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]在com.abc.xyx.service.task.task.init(task.java:179)~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]在com.abc.xyx.service.task.TaskService.searchOnePageTasks(TaskService.java:558)~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]在com.abc.xyx.service.task.task.(task.java:93)~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]在com.abc.xyx.service.task.TaskService$$FastClassBySpringCGLIB$$bb02ea04.invoke()~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]发布于org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)~[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    
    (完整)日志存储写入access.log的等效日志
    如下:

    {"message":"549 <14>1 2016-07-15T23:31:34.208666+00:00 loggregator c022c216-4373-418e-bb4d-fbde0b41d720 [App/0] - - \u001B[0;39m23:31:34.208 \u001B[36m[http-nio-61430-exec-10]\u001B[0;39m \u001B[39mDEBUG\u001B[0;39m \u001B[36mo.s.w.s.m.m.a.HttpEntityMethodProcessor\u001B[0;39m \u001B[30m- Written [{timestamp=Fri Jul 15 23:31:34 UTC 2016, status=500, error=Internal Server Error, exception=java.lang.IllegalArgumentException, message=System exception, path=/api/tasksearch}] as \"application/json;charset=UTF-8\" using 
    
    {“message”:“54912016-07-15T23:31:34.208666+00:00 loggregator c022c216-4373-418e-bb4d-fbde0b41d720[App/0]-\u001B[0;39m23:31:34.208\u001B[36m[http-nio-61430-exec-10]\u001B[0;39m\u001B[39m\u001B[0;39m\u001B][{timestamp=Fri Jul 15 23:31:34 UTC 2016,状态=500,错误=Internal Server error,异常=java.lang.IllegalArgumentException,消息=System exception,路径=/api/tasksearch}]作为\“应用程序/json;字符集=UTF-8\”使用
    
    问题:

     2016-07-15T19:31:34.184-0400[App/0]OUT23:31:34.183 [36m[http-nio-61430-exec-10][0;39m [39mDEBUG[0;39m [36mo.s.w.s.m.m.a.ExceptionHandlerExceptionResolver[0;39m [30m- Resolving exception from handler [public org.springframework.http.ResponseEntity<?> com.abc.xyx.rest.TaskController.getTasks(org.springframework.web.context.request.WebRequest)]: java.lang.IllegalArgumentException: Invalid enum name:Other in com.abc.xyx.service.task.TaskType
    2016-07-15T19:31:34.187-0400[App/0]OUT[0;39m23:31:34.186 [36m[http-nio-61430-exec-10][0;39m [39mDEBUG[0;39m [36mo.s.b.f.s.DefaultListableBeanFactory[0;39m [30m- Returning cached instance of singleton bean 'exceptionHandlingAdvice'
    2016-07-15T19:31:34.189-0400[App/0]OUT[0;39m23:31:34.189 [36m[http-nio-61430-exec-10][0;39m [39mDEBUG[0;39m [36mo.s.w.s.m.m.a.ExceptionHandlerExceptionResolver[0;39m [30m- Invoking @ExceptionHandler method: public void com.abc.xyx.rest.ExceptionHandlingAdvice.systemException(java.lang.Exception)
    2016-07-15T19:31:34.193-0400[App/0]OUT[0;39m23:31:34.192 [36m[http-nio-61430-exec-10][0;39m [1;31mERROR[0;39m [36mc.r.t.r.ExceptionHandlingAdvice[0;39m [30m- Unexpected system exception
    2016-07-15T19:31:34.193-0400[App/0]OUT[0;39mjava.lang.IllegalArgumentException: Invalid enum name:Other in com.abc.xyx.service.task.TaskType
    2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.TaskUtils.getEnum(TaskUtils.java:30) ~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.Task.init(Task.java:179) ~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.TaskService.searchOnePageTasks(TaskService.java:558) ~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.Task.<init>(Task.java:93) ~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]OUT at com.abc.xyx.service.task.TaskService$$FastClassBySpringCGLIB$$bb02ea04.invoke(<generated>) ~[xyx-core-1.0-SNAPSHOT.jar:na]
    2016-07-15T19:31:34.194-0400[App/0]OUT at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    
    如何获取Java异常的完整堆栈跟踪,以便对调试有用

    任何帮助都将不胜感激