What is the proper way of logging from inside Jira (5.x) plugins?
I found at least two articles and I am not sure which approach is the correct one.
Update: I am looking to obtain a proper and well documented way of implementing logging in Jira plugins, one that will have to match the following requirements:
- Sample code to add to your plugin (including modifications to atlassian-plugin.xml or pom.xml, if needed)
- Logged messaged should be visible inside atlassian-jira.log file
- Not to interfere with logging from other plugins - I am asking this because the approach of inserting a log4j.properties file with your plugin seems to work agains this.
- Be able to see all messages from your plugin when you run in development mode (example atlas-run)
- Be able to see warnings or above when running on Jira, and this without having to tune Jira logging configuration.
Where I got so far:
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
...
public class MyJiraServlet extends HttpServlet {
private static final Logger log = LogManager.getLogger("atlassian.plugin");
...
}
log.info("MyPlugin init"); // should see this on devel
log.error("MyPlugin error"); // should see this even on production
...
The problem is that now I goet tons of errors in the console, which I suppose should be real logs from my plugin
[INFO] [talledLocalContainer] log4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
[INFO] [talledLocalContainer] log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
[INFO] [talledLocalContainer] log4j:ERROR [109.0] whereas object of type
[INFO] [talledLocalContainer] log4j:ERROR "org.apache.log4j.ConsoleAppender" was loaded by [WebappClassLoader
[INFO] [talledLocalContainer] delegate: false
[INFO] [talledLocalContainer] repositories:
[INFO] [talledLocalContainer] /WEB-INF/classes/
[INFO] [talledLocalContainer] ----------> Parent Classloader:
[INFO] [talledLocalContainer] org.apache.catalina.loader.StandardClassLoader@30fffd2c
[INFO] [talledLocalContainer] ].
[INFO] [talledLocalContainer] log4j:ERROR Could not instantiate appender named "console".
[INFO] [talledLocalContainer] log4j:ERROR A "com.atlassian.jira.logging.MultiTenantJiraHomeAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
[INFO] [talledLocalContainer] log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
[INFO] [talledLocalContainer] log4j:ERROR [109.0] whereas object of type
[INFO] [talledLocalContainer] log4j:ERROR "com.atlassian.jira.logging.MultiTenantJiraHomeAppender" was loaded by [WebappClassLoader
[INFO] [talledLocalContainer] delegate: false
[INFO] [talledLocalContainer] repositories:
[INFO] [talledLocalContainer] /WEB-INF/classes/
[INFO] [talledLocalContainer] ----------> Parent Classloader:
[INFO] [talledLocalContainer] org.apache.catalina.loader.StandardClassLoader@30fffd2c
[INFO] [talledLocalContainer] ].
[INFO] [talledLocalContainer] log4j:ERROR Could not instantiate appender named "filelog".
[INFO] [talledLocalContainer] log4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
[INFO] [talledLocalContainer] log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
[INFO] [talledLocalContainer] log4j:ERROR [109.0] whereas object of type
[INFO] [talledLocalContainer] log4j:ERROR "org.apache.log4j.ConsoleAppender" was loaded by [WebappClassLoader
[INFO] [talledLocalContainer] delegate: false
[INFO] [talledLocalContainer] repositories:
[INFO] [talledLocalContainer] /WEB-INF/classes/
[INFO] [talledLocalContainer] ----------> Parent Classloader:
[INFO] [talledLocalContainer] org.apache.catalina.loader.StandardClassLoader@30fffd2c
[INFO] [talledLocalContainer] ].