2015-12-01 2 views
0

В log4j Я использую системный журнал для входа JUST сообщениеКак продлить syslogAppender в log4j2

log4j.appender.SYSLOG.layout.ConversionPattern=%m%n 

теперь обновленное к log4j2. Проблема в том, что syslog теперь просто содержит 2 макета, и я не могу использовать какой-либо пользовательский способ для регистрации только сообщения, поэтому мне нужно его переопределить. Как мне начать?

+0

Возможный дубликат [Как создать пользовательский Appender в log4j2?] (Http://stackoverflow.com/questions/24205093/как к Create-A-настраиваемого-Appender-в-log4j2) – hinneLinks

ответ

0

Если вы хотите, чтобы пользовательский макет использовал SocketAppender.

0

ОК Я продлил syslogappender и создал статический метод, где я добавить раскладку в качестве аргумента

@PluginFactory 
public static PatternSyslogAppender createAppender(
     // @formatter:off 
     @PluginAttribute("host") final String host, 
     @PluginAttribute(value = "port", defaultInt = 0) final int port, 
     @PluginAttribute("protocol") final String protocolStr, 
     @PluginElement("SSL") final SslConfiguration sslConfig, 
     @PluginAttribute(value = "connectTimeoutMillis", defaultInt = 0) final int connectTimeoutMillis, 
     @PluginAliases("reconnectionDelay")// deprecated 
     @PluginAttribute(value = "reconnectionDelayMillis", defaultInt = 0) final int reconnectionDelayMillis, 
     @PluginAttribute(value = "immediateFail", defaultBoolean = true) final boolean immediateFail, 
     @PluginAttribute("name") final String name, 
     @PluginAttribute(value = "immediateFlush", defaultBoolean = true) final boolean immediateFlush, 
     @PluginAttribute(value = "ignoreExceptions", defaultBoolean = true) final boolean ignoreExceptions, 
     @PluginAttribute(value = "facility", defaultString = "LOCAL0") final Facility facility, 
     @PluginAttribute("id") final String id, 
     @PluginAttribute(value = "enterpriseNumber", defaultInt = Rfc5424Layout.DEFAULT_ENTERPRISE_NUMBER) final int enterpriseNumber, 
     @PluginAttribute(value = "includeMdc", defaultBoolean = true) final boolean includeMdc, 
     @PluginAttribute("mdcId") final String mdcId, @PluginAttribute("mdcPrefix") final String mdcPrefix, 
     @PluginAttribute("eventPrefix") final String eventPrefix, 
     @PluginAttribute(value = "newLine", defaultBoolean = false) final boolean newLine, 
     @PluginAttribute("newLineEscape") final String escapeNL, @PluginAttribute("appName") final String appName, 
     @PluginAttribute("messageId") final String msgId, @PluginAttribute("mdcExcludes") final String excludes, 
     @PluginAttribute("mdcIncludes") final String includes, 
     @PluginAttribute("mdcRequired") final String required, @PluginAttribute("format") final String format, 
     @PluginElement("Filter") final Filter filter, @PluginConfiguration final Configuration config, 
     @PluginAttribute(value = "charset", defaultString = "UTF-8") final Charset charsetName, 
     @PluginAttribute("exceptionPattern") final String exceptionPattern, 
     @PluginElement("LoggerFields") final LoggerFields[] loggerFields, 
     @PluginAttribute(value = "advertise", defaultBoolean = false) final boolean advertise, 
     @PluginElement("Layout") Layout<? extends Serializable> layout) 

{ 
    // @formatter:on 

    // TODO: add Protocol to TypeConverters 
    final Protocol protocol = EnglishEnums.valueOf(Protocol.class, protocolStr); 
    final boolean useTlsMessageFormat = sslConfig != null || protocol == Protocol.SSL; 

    if (layout == null) { 
     layout = PatternLayout.createDefaultLayout(); 
    } 

    if (RFC5424.equalsIgnoreCase(format)) { 
     Rfc5424Layout.createLayout(facility, id, enterpriseNumber, includeMdc, mdcId, mdcPrefix, eventPrefix, 
       newLine, escapeNL, appName, msgId, excludes, includes, required, exceptionPattern, 
       useTlsMessageFormat, loggerFields, config); 
    } else if (layout == null) { 
     SyslogLayout.createLayout(facility, newLine, escapeNL, charsetName); 
    } 

    if (name == null) { 
     LOGGER.error("No name provided for SyslogAppender"); 
     return null; 
    } 
    final AbstractSocketManager manager = createSocketManager(name, protocol, host, port, connectTimeoutMillis, 
      sslConfig, reconnectionDelayMillis, immediateFail, layout); 

    return new PatternSyslogAppender(name, layout, filter, ignoreExceptions, immediateFlush, manager, 
      advertise ? config.getAdvertiser() : null); 
} 
Смежные вопросы