Reputation: 1966
Can anyone suggest how to get rid of this error.
I have made a custom Appender with the help of How to create a own Appender in log4j?
My appender is:
package com.abc.log4jlearn;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.spi.LoggingEvent;
public class MyAppender extends AppenderSkeleton{
private LogManager logManager;
public MyAppender (){
this.logManager = LogManager.getInstance();
}
@Override
protected void append(LoggingEvent loggingEvent) {
String message = loggingEvent.getMessage().toString();
logManager.addthese(message);
}
@Override
public void close() {
if(this.closed) {
return;
}
this.closed = true;
}
@Override
public boolean requiresLayout() {
return false;
}
boolean checkEntryConditions() {
return true;
}
}
LogManager class is:
public class LogManager {
public LogManager() {}
public static LogManager getInstance() {
return new LogManager();
}
public void addthese(String message) {
System.out.println("Hey...");
System.out.println(message);
}
}
Log4j.xml configuration is :
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="MyAppender" class="package com.abc.log4jlearn.MyAppender">
<param name="Append" value="false"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{ISO8601} %c{1} - %m%n"/>
</layout>
</appender>
<root>
<priority value="debug"/>
<appender-ref ref="MyAppender"/>
</root>
</log4j:configuration>
Test Class is:
public class Log4jLearnkDemo {
private static Logger logger = Logger.getLogger(Log4jLearnkDemo.class);
public static void main(String[] args){
logger.debug("Hello this is a debug message");
logger.info("Hello this is an info message");
}
}
When I run Log4jLearnDemo class I am getting output
Hey...
Hello this is a debug message
Hey..
Hello this is an info message
log4j:WARN No such property [append] in com.abc.log4jlearn.MyAppender.
Can somebody suggest why I am getting this error ?
Thanks,
Upvotes: 1
Views: 1229
Reputation: 1701
In your Log4j.xml you define the following line for a param named "Append" with value "false":
<param name="Append" value="false"/>
If you uncomment this (maybe it is from the example you took)
<!-- param name="Append" value="false"/ -->
the message will disappear.
Otherwise, if you want to give MyAppender
an "append"-Logic, the class might need something like
private boolean append;
// get/set for the property
Upvotes: 4