В java веб-приложении, как читать log4j.xml из местоположения WEB-INB / conf с аннотациями Spring 3.0 - PullRequest
2 голосов
/ 22 августа 2011

Я хотел поместить свой файл log4j.xml в каталог WEB-INF / conf, где у меня есть много других файлов конфигурации. И я хотел, чтобы веб-приложение читало log4.xml оттуда.

Я пытался использовать spring3.0 и аннотации. Так что не знаете, как получить доступ к контексту сервлета, чтобы получить местоположение WEB-INF.

попробовал это

InputStream ist = Thread.currentThread().getContextClassLoader().getResourceAsStream("/conf/log4j-my.xml");

но он ищет в tomcat / bin /

Попробовал это, но не сильно помогло DOMConfigurator.configure("WEB-INF/conf/log4j-my.xml");

Буду признателен за любую помощь / ссылки / указатель.

1 Ответ

4 голосов
/ 22 августа 2011

Не уверен, что вы действительно хотите сделать ....

если ваш log4j.xml находится в classpath, при запуске вашего сервера приложений он должен быть загружен автоматически.

Проверьте консоль при запуске вашего сервера, и вы должны увидеть информацию о log4j.

Вы также можете поместить debug = true:

<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">

в ваш xml.вы сможете увидеть много информации о вашей конфигурации.

Теперь, если вы хотите получить доступ к приложениям, которые вы настроили в log4j.xml, все, что вам нужно сделать, это:

Logger mylogger = Logger.getLogger("MyAppenderName");

Хорошо, я думаю, вы хотите загрузить пользовательский файл конфигурации log4j!В контексте веб-приложения вам понадобятся 2 вещи:

create contextListnerServlet;измените ваш web.xml

ServletListner:

public class StartupListener implements ServletContextListener
{
@Override
public void contextDestroyed(ServletContextEvent arg0)
{
    // Cleanup code goes here
}

@Override
public void contextInitialized(ServletContextEvent sce)
{
    Logger logger = null;
    String log4jFile = sce.getServletContext().getInitParameter("log4jFileName");
    DOMConfigurator.configure(sce.getServletContext().getRealPath(log4jFile));
    logger = LogManager.getLogger(StartupListener.class.getName());
    logger.debug("Loaded: " + log4jFile);
}

web.xml:

<context-param>
<param-name>log4jFileName</param-name>
<param-value>
     WEB-INF/config/log4j-my.xml
</param-value>
</context-param>

<listener>
<listener-class>
    com.yourpackage.StartupListener
</listener-class>
</listener>

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...