1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.helger.schematron.pure.errorhandler;
18
19 import javax.annotation.Nonnull;
20 import javax.annotation.Nullable;
21
22 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory;
24
25 import com.helger.commons.error.IErrorLevel;
26 import com.helger.commons.io.resource.IReadableResource;
27 import com.helger.commons.lang.ClassHelper;
28 import com.helger.commons.log.LogHelper;
29 import com.helger.commons.string.StringHelper;
30 import com.helger.schematron.pure.model.IPSElement;
31 import com.helger.schematron.pure.model.IPSHasID;
32
33
34
35
36
37
38 public class LoggingPSErrorHandler extends AbstractPSErrorHandler
39 {
40 private static final Logger s_aLogger = LoggerFactory.getLogger (LoggingPSErrorHandler.class);
41
42 public LoggingPSErrorHandler ()
43 {
44 super ();
45 }
46
47 public LoggingPSErrorHandler (@Nullable final IPSErrorHandler aNestedErrorHandler)
48 {
49 super (aNestedErrorHandler);
50 }
51
52 @Nonnull
53 public static String getLogMessage (@Nullable final IReadableResource aRes,
54 @Nullable final IPSElement aSourceElement,
55 @Nonnull final String sMessage)
56 {
57 return StringHelper.getImplodedNonEmpty (" - ",
58 aRes == null ? null : aRes.getPath (),
59 aSourceElement == null ? null
60 : ClassHelper.getClassLocalName (aSourceElement),
61 aSourceElement instanceof IPSHasID && ((IPSHasID) aSourceElement).hasID () ? "ID " +
62 ((IPSHasID) aSourceElement).getID ()
63 : null,
64 sMessage);
65 }
66
67 @Override
68 protected void handle (@Nullable final IReadableResource aRes,
69 @Nonnull final IErrorLevel aErrorLevel,
70 @Nullable final IPSElement aSourceElement,
71 @Nonnull final String sMessage,
72 @Nullable final Throwable t)
73 {
74 LogHelper.log (s_aLogger, aErrorLevel, getLogMessage (aRes, aSourceElement, sMessage), t);
75 }
76 }