1

i am trying to use Slack appender for log4j2 by tobias, in Java 8 project with maven. The tobias project is: tobias wrapper for slack

I am trying to configure the appender or by log4j2.xml file or by programatic configuration, and both ways i can't get it to work.

My log4j4.xml file is:

<configuration monitorInterval="30">
<appenders>
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout
                pattern="%-5p - [%t]"/>
    </Console>

    <Slack name="Slack" channel="configurouter-alerts">
        <PatternLayout pattern="%-5p - [%t]"/>
    </Slack>

</appenders>

<loggers>
    <root level="info">
        <appender-ref ref="Slack" level="info"/>
        <appender-ref ref="Console"/>
    </root>
</loggers>
</configuration>

My maven dependencies are:

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>slackappender</groupId>
<artifactId>slackappender</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

<dependencies>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.21</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.9.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.9.0</version>
    </dependency>

    <dependency>
        <groupId>be.olsson</groupId>
        <artifactId>slack-appender</artifactId>
        <version>1.2.0</version>
    </dependency>

</dependencies>

</project>

I am getting this error log:

2018-09-17 12:07:38,815 main ERROR Unable to invoke factory method in class be.olsson.slackappender.SlackAppender for element Slack: java.lang.IllegalArgumentException: Didn't find any working be.olsson.slackappender.client.Client implementation called null java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:136)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:958)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:898)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:890)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:513)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:237)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:249)
    at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:545)
    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:617)
    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:634)
    at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:229)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
    at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
    at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:122)
    at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:43)
    at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:46)
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:358)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383)
    at LoggingUtils.lambda$startLogging$1(LoggingUtils.java:70)
    at LoggingUtils.startLogging(LoggingUtils.java:25)
    at LoggingUtils.startLogging(LoggingUtils.java:70)
    at Main.main(Main.java:9)
Caused by: java.lang.IllegalArgumentException: Didn't find any working be.olsson.slackappender.client.Client implementation called null
    at be.olsson.slackappender.SlackAppender.findClientImpl(SlackAppender.java:326)
    at be.olsson.slackappender.SlackAppender.createAppender(SlackAppender.java:310)
    ... 28 more

2018-09-17 12:07:38,822 main ERROR Null object returned for Slack in appenders.
2018-09-17 12:07:38,826 main ERROR Unable to locate appender "Slack" for logger config "root"
2018-09-17T12:07:38,938 [main] [INFO ] [flow=] [phase=] [uid=] [url=] [] Main - logging started
2018-09-17T12:07:38,940 [main] [INFO ] [flow=] [phase=] [uid=] [url=] [] Main - Info logger.
2018-09-17T12:07:38,940 [main] [ERROR] [flow=] [phase=] [uid=] [url=] [] Main - Warning logger.

Process finished with exit code 0

Does someone that uses this tobias wrapper with maven and know hoe to help?

isalgueiro
  • 1,973
  • 16
  • 20
Ran G
  • 21
  • 5

2 Answers2

1

Didn't use this appender, but as I can see in the build.gradle file in it's github repo, you need to manually add the HTTP client implementation to your runtime classpath. Those are the libs the author uses in the project:

dependencies {
    provided 'com.squareup.okhttp:okhttp:2.5.0'
    provided 'com.squareup.okhttp3:okhttp:3.5.0'
...
isalgueiro
  • 1,973
  • 16
  • 20
0

Thanks, that solved the problem! I added to the pom the dependency:

 <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>3.11.0</version>
        </dependency>
Ran G
  • 21
  • 5