2012-04-02 30 views
5

Gần đây chúng tôi đã chuyển từ Log4J sang Logback. Ghi nhật ký dường như hoạt động tốt trừ các dấu vết ngăn xếp trong SyslogAppender. Chúng được tiền tố giống như các thông điệp tường trình còn lại.Logback SyslogAppender prefixtrace prefix prefix

Có cách nào để vô hiệu hóa tiền tố này và đảm bảo chúng sẽ được in giống như trong Log4J SyslogAppender không? Cảm ơn trước.

hành vi hiện tại: Hành vi

Apr 02 12:31:08 host.name 2012-04-02T12:31:08.418+0200 ajp-bio-8009-exec-7 com.gooddata.exception.servlet.HttpExceptionTranslator ERROR: Processing client_request=/gdcwebapp/gdc/projects/FoodMartDemo/groups/everyone status=FAILED errorCode=gdc.usergroups.default_group_modification errorDescription="Attempt to modify default group (everyone)" exceptionId=abc37cf0-9c56-4e68-a4a7-2111ca823fd4 component=webapp request_id=cAWvICOaKVFF1VvI userId=1 projectId=FoodMartDemo nodeId=nodeOne nodeId=nodeOne, requestId=cAWvICOaKVFF1VvI, userId=1, projectId=FoodMartDemo 
Apr 02 12:31:08 host.name #011at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
Apr 02 12:31:08 host.name #011at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
Apr 02 12:31:08 host.name #011at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
Apr 02 12:31:08 host.name #011at java.lang.reflect.Method.invoke(Method.java:601) 
Apr 02 12:31:08 host.name #011at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212) 
Apr 02 12:31:08 host.name #011at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) 
Apr 02 12:31:08 host.name #011at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) 
Apr 02 12:31:08 host.name #011at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) 
Apr 02 12:31:08 host.name #011at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) 
Apr 02 12:31:08 host.name #011at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
Apr 02 12:31:08 host.name #011at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900) 

mong muốn:

Apr 02 12:31:08 host.name 2012-04-02T12:31:08.418+0200 ajp-bio-8009-exec-7 com.gooddata.exception.servlet.HttpExceptionTranslator ERROR: Processing client_request=/gdcwebapp/gdc/projects/FoodMartDemo/groups/everyone status=FAILED errorCode=gdc.usergroups.default_group_modification errorDescription="Attempt to modify default group (everyone)" exceptionId=abc37cf0-9c56-4e68-a4a7-2111ca823fd4 component=webapp request_id=cAWvICOaKVFF1VvI userId=1 projectId=FoodMartDemo nodeId=nodeOne nodeId=nodeOne, requestId=cAWvICOaKVFF1VvI, userId=1, projectId=FoodMartDemo 
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
          at java.lang.reflect.Method.invoke(Method.java:601) 
          at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212) 
          at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) 
          at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) 
          at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) 
          at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) 
          at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
          at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900) 

logback.xml hiện tại cho SyslogAppender:

<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender"> 
    <facility>local2</facility> 
    <syslogHost>localhost</syslogHost> 
    <suffixPattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %t %c %p: %m component=webapp request_id=%X{requestId} userId=%X{userId} projectId=%X{projectId} nodeId=%X{nodeId} %X%n</suffixPattern> 
    </appender> 

Trả lời

6

Bạn có thể sửa lỗi này bằng cách đặt tham số throwableExcluded thành true và chỉ định ngoại lệ trong mẫu hậu tố.

<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender"> 
    <syslogHost>localhost</syslogHost> 
    <facility>LOCAL7</facility> 
    <throwableExcluded>true</throwableExcluded> 
    <suffixPattern>%d{ISO8601} %p %t %c{0}.%M - %m%n%xException</suffixPattern> 
</appender> 

Tùy thuộc vào máy chủ syslog bạn sử dụng, bạn có thể cần phải tắt tính năng kiểm soát ký tự để văn bản hiển thị chính xác. ví dụ. $EscapeControlCharactersOnReceive off cho rsyslog v5

0

Trình quản lý nhật ký Syslog của Trình đăng nhập không xử lý quyền này. Bạn sẽ phải tự viết. Nó có thể dựa trên bản gốc. Về cơ bản, vấn đề ở đây là:

StringBuilder sb = new StringBuilder(); 
     sb.append(stackTracePrefix).append(step); 
     sw.write(sb.toString().getBytes()); 
     sw.flush(); 

Khi bạn đang xả, nó sẽ gửi thư mới đến nhật ký hệ thống. Nếu bạn muốn tránh nó, bạn sẽ phải tuôn ra chỉ sau khi toàn bộ ngăn xếp.

Các vấn đề liên quan