Perhaps the Log4j developers should spend some time to persuade other
Apache projects to start using Log4j 2.

On Fri, Aug 14, 2015 at 8:05 AM, Jinhong Lu <lujinho...@gmail.com> wrote:

> you mean upgrade to log4j2?
>
> but all my projects, including spark, hadoop, kafka, they all use log4j1.x
>
> 2015-08-14 13:25 GMT+08:00 Ralph Goers <ralph.go...@dslextreme.com>:
>
> > Please see -
> >
> https://blogs.apache.org/foundation/entry/apache_logging_services_project_announces
> > <
> >
> https://blogs.apache.org/foundation/entry/apache_logging_services_project_announces
> > >.
> >
> > Ralph
> >
> > > On Aug 13, 2015, at 10:08 PM, Jinhong Lu <lujinho...@gmail.com> wrote:
> > >
> > > I met this exception when using syslogappender.
> > >
> > > my log4j version is 1.2.16.
> > >
> > > Any idea?  thanks.
> > >
> > >
> > >
> > >
> > > java.lang.NoSuchFieldError: errorHandler
> > >       at
> >
> org.apache.log4j.net.SyslogAppender.setSyslogHost(SyslogAppender.java:391)
> > > ~[log4j-1.2.16.jar:na]
> > >       at
> > com.netease.sytopology.util.MySysLogger.<init>(MySysLogger.java:39)
> > > ~[stormjar.jar:na]
> > >       at
> > com.netease.sytopology.util.MySysLogger.getInstance(MySysLogger.java:28)
> > > ~[stormjar.jar:na]
> > >       at
> >
> com.netease.sytopology.bolt.FilterFunction.prepare(FilterFunction.java:65)
> > > ~[stormjar.jar:na]
> > >       at
> >
> storm.trident.planner.processor.EachProcessor.prepare(EachProcessor.java:54)
> > > ~[storm-core-0.9.4.jar:0.9.4]
> > >       at
> > storm.trident.planner.SubtopologyBolt.prepare(SubtopologyBolt.java:121)
> > > ~[storm-core-0.9.4.jar:0.9.4]
> > >       at
> >
> storm.trident.topology.TridentBoltExecutor.prepare(TridentBoltExecutor.java:231)
> > > ~[storm-core-0.9.4.jar:0.9.4]
> > >       at
> > backtype.storm.daemon.executor$fn__4722$fn__4734.invoke(executor.clj:692)
> > > ~[storm-core-0.9.4.jar:0.9.4]
> > >       at backtype.storm.util$async_loop$fn__458.invoke(util.clj:461)
> > > ~[storm-core-0.9.4.jar:0.9.4]
> > >       at clojure.lang.AFn.run(AFn.java:24) [clojure-1.5.1.jar:na]
> > >       at java.lang.Thread.run(Thread.java:745) [na:1.7.0_67]
> > >
> > >
> > > And here is my code:
> > >
> > >
> > > import org.apache.log4j.Level;
> > >
> > > import org.apache.log4j.Logger;
> > >
> > > import org.apache.log4j.PatternLayout;
> > >
> > > import org.apache.log4j.helpers.OnlyOnceErrorHandler;
> > >
> > > import org.apache.log4j.net.SyslogAppender;
> > >
> > > import org.apache.log4j.varia.FallbackErrorHandler;
> > >
> > >
> > > public class MySysLogger {
> > >
> > > //以下参数均可根据需要放到配置文件中。
> > >
> > > //默认日志级别
> > >
> > > private static Level level = Level.INFO;
> > >
> > > //日志接收服务器
> > >
> > > private static String syslogHost = "172.16.1.18";
> > >
> > > //设置facility
> > >
> > > private static String facility = "local7";
> > >
> > > private static String  loggerName = "";
> > >
> > >
> > > public static void setLoggerName(String loggerName2) {
> > >
> > > MySysLogger.loggerName = loggerName2;
> > >
> > > }
> > >
> > >
> > > private static Logger LOG = null;
> > >
> > >
> > > public static synchronized Logger getInstance() {
> > >
> > > if (LOG == null) {
> > >
> > > new MySysLogger(loggerName);
> > >
> > > }
> > >
> > > return LOG;
> > >
> > > }
> > >
> > >
> > > private  MySysLogger(String loggerName) {
> > >
> > >
> > > LOG = Logger.getRootLogger();
> > >
> > > LOG.setLevel(level);
> > >
> > > SyslogAppender appender = new SyslogAppender();
> > >
> > > appender.setErrorHandler(new FallbackErrorHandler());
> > >
> > >
> > > appender.setSyslogHost(syslogHost);
> > >
> > > appender.setLayout(new PatternLayout(
> > >
> > > "%r " + loggerName +" [%t] %-5p %C%x - %m"));
> > >
> > > appender.setHeader(true);
> > >
> > > appender.setFacility(facility);
> > >
> > > LOG.addAppender(appender);
> > >
> > > }
> > >
> > >
> > > }
> >
> >
>



-- 
[image: MagineTV]

*Mikael Ståldal*
Senior backend developer

*Magine TV*
mikael.stal...@magine.com
Regeringsgatan 25  | 111 53 Stockholm, Sweden  |   www.magine.com

Privileged and/or Confidential Information may be contained in this
message. If you are not the addressee indicated in this message
(or responsible for delivery of the message to such a person), you may not
copy or deliver this message to anyone. In such case,
you should destroy this message and kindly notify the sender by reply
email.

Reply via email to