2011-10-28 8 views

Respuesta

5

Hay. Tomado de ayuda en línea http://www.jetbrains.com/idea/webhelp/setting-log-options.html

Si está utilizando herramientas de registro de terceros, es posible que desee hacer la salida del mensaje , que imita una unión estándar para el código fuente como para la línea StackTrace (en . (:)). Para eso, debe agregar un patrón de conversión específico a su archivo de configuración log.xml . Por ejemplo, en un modelo de conversión log4j este habría

<param name="ConversionPattern" value="%-5p - [%-80m] - at %c.%M(%F:%L)%n"/> 

Sin embargo, la produce de salida es bastante feo con nombres totalmente calificados, nombres de los métodos etc.

+0

La documentación oficial es bastante vaga sobre lo que se necesita como mínimo (lo que sería relevante aquí) –

2

Puede definir sus propios caminos output filters o archivos de impresión con los números de línea separados por dos puntos, ya sean rutas completas o rutas relativas a sus raíces de origen del proyecto. El filtro de salida personalizado puede usar las siguientes variables: $FILE_PATH$, $LINE$.

+0

jugado un poco con esto. Parece que solo las fuentes realmente presentes están resaltadas. Me gustaría tener también las fuentes descargadas para las dependencias de Maven destacadas. es posible? –

18

Como de IntelliJ 14 y alternativa a la excavación a través de configuración de IntelliJ, algún ensayo y error revelaron que nada con el patrón

(anyfile.ext:line) 

precedido por al menos un . en la consola se convirtió en a un enlace de archivo si hay algún archivo conocido por ese nombre, p. .(Whatever.java:55), en el espacio de trabajo excluyendo los de las bibliotecas.

Estoy usando logback. Así que, como mínimo, en mi logback.xml de conseguir enlaces a mis clases he incluido en mi mensaje patrón

.\(%class{0}.java:%line\) 
  • .\( \) -> Un punto debe preceder el nombre de archivo: Modelo de línea y el nombre del archivo: patrón de línea encerrado en paréntesis El logback requiere que se escapen paréntesis literales en este caso.
  • %class{0} -> Sólo el nombre de clase sin un paquete
  • .java -> para que coincida con el nombre completo
  • :%line -> Es la línea de registro de código de

En realidad, tengo otras cosas que siempre incluye al menos un . antes de la parte (filename:line), por lo que también lo recoge IntelliJ.

<pattern>%highlight(%-5level) %d{yyyy-MM-dd'T'HH:mm:ss.SSS} %yellow([%thread]) %blue(%logger{36}\(%class{0}.java:%line\)) %msg%n</pattern> 
+0

¡Gracias, gran descubrimiento! – Hejazi

+0

Gracias, gracias, muchas gracias !!!!!!! – varantes

+0

Con esto obtienes solo enlaces seleccionables para tus propias clases, prefiero agregar% calller {1} al final del patrón para poder hacer clic en cualquier clase. –

0

Para que las cosas REALMENTE funcionen, debe cumplir con la notación completa de stacktrace.Al igual que su NO es suficiente para simplemente poner un punto "." delante de los corchetes. Si tiene dos clases con el mismo nombre pero diferentes paquetes, IntelliJ elegirá la primera que encuentre. Para que esto funcione CORRECTAMENTE, incluso en este caso, debe escribir

nombre de clase totalmente calificado + "." + Methodname + "(" + + simpleclassname ".java:" + LineNumber + ")"

Si usted no sabe el número de línea usando ": 1" trabajó para mí

Cuestiones relacionadas