Ok, my fault. It is not about the PatternLayout. But deleting the file Flume is 
currently using without restarting the agent is not a good idea. ;-)

Cheers
Seb.

Am 19.05.2014 um 20:46 schrieb Sebastian Gäde <[email protected]>:

> Hi,
> 
> thanks, worked for me, (using 
> http://stackoverflow.com/questions/6072389/how-to-create-a-own-appender-in-log4j):
> 
> public class MyFlumeAppender extends AppenderSkeleton {       
> MyRpcClientFacade client = new MyRpcClientFacade();
> 
> public MyFlumeAppender() {
>       super();
>       String flumeServer = "localhost";
>       Configuration conf = new Configuration();
>       conf.addResource("app-config.xml");
>       flumeServer = conf.get("flume.server");
>       client.init(flumeServer, 41415);
> }
> 
> @Override
> public void close() {
>       client.cleanUp();
> }
> 
> @Override
> public boolean requiresLayout() {
>       // TODO Auto-generated method stub
>       return false;
> }
> 
> @Override
> protected void append(LoggingEvent event) {
>       //String logger = event.getLoggerName();
>       //String level = event.getLevel().toString();
>       //Long ts = event.getTimeStamp();
>       //client.sendDataToFlume(ts.toString()+" - "+level+" - 
> "+event.getMessage().toString());
>       PatternLayout myLayout = new PatternLayout("%d{ISO8601} %-5p %c - %m");
>       client.sendDataToFlume(myLayout.format(event));
>       }
> 
> }
> 
> However, when I try to use the PatternLayout for formatting the output, 
> logging falls back to the container logs. If I build a string on my own 
> (uncommenting the first four lines in append) it's working. I know this might 
> be a bit off topic now, but maybe someone has an idea?
> 
> Cheers
> Seb.
> 
> Am 19.05.2014 11:17, schrieb Harsh J:
>> Task JVMs in MR run with their own TaskLogAppender-configured
>> task-log4j.properties file. This is not overridable or configurable
>> currently.
>> 
>> Your best approach at the moment would be to configure your custom
>> appender in code at the beginning of your program.
>> 
>> On Sun, May 18, 2014 at 9:27 PM, Sebastian Gäde <[email protected]> 
>> wrote:
>>> Hi,
>>> 
>>> I'd like to log events within my MR application using Flume writing to a
>>> central log file. I've followed
>>> http://flume.apache.org/releases/content/1.4.0/FlumeUserGuide.html#log4j-appender
>>> putting the stuff into Hadoop's log4j.properties and copying it to Hadoop's
>>> conf directory on all nodes.
>>> 
>>> However, my in-application events are only logged to stdout (I can see them
>>> using the YARN webapp) but not to Flume. Although I thought Hadoop's conf
>>> directory is added to classpath, it does not seem to work for me.
>>> 
>>> Could you please tell me where I should put the log4j.properties?
>>> 
>>> Cheers
>>> Seb.
>> 
>> 
>> 

Reply via email to