Struts 1.x внутренняя регистрация с использованием log4j2 - PullRequest
0 голосов
/ 07 ноября 2019

Я создал пример веб-приложения, используя Struts 1.3. Я пытаюсь распечатать журналы, используя log4j2, но я не могу получить журналы распорок в файле журнала

Я попытался создать регистратор для распорок в log4j2. файл свойств, как показано ниже

status = info
log4j2.debug = true

appender.file.type = File
appender.file.name = LOGFILE
appender.file.fileName=/test/logs/struts.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern= %d{yyyy-MM-dd HH:mm:ss.SSS} <%t>(%-6X{sys:user}) %2.2x - %msg%n

loggers = org.apache.struts,com.myapp.struts
logger.org.apache.struts.name = org.apache.struts
logger.org.apache.struts.level = trace
logger.org.apache.struts.appenderRef.file.ref = LOGFILE
logger.org.apache.struts.additivity = false

logger.com.myapp.struts.name = com.myapp.struts
logger.com.myapp.struts.level = trace
logger.com.myapp.struts.appenderRef.file.ref = LOGFILE
logger.com.myapp.struts.additivity = false

rootLogger.level = trace

Я все еще не получаю журналы. Ниже приведен каталог моего проекта

enter image description here

Класс loginform такой, как показано ниже

package com.myapp.struts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class loginform extends org.apache.struts.action.Action 
{

    static final Logger log = LogManager.getLogger(loginform.class);
    private static final String SUCCESS = "success";
    private static final String FAILURE = "failure";
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception 
    {
        log.info("Inside the loginform class");
        log.info("Execute method called");
        loginbean lb = (loginbean)form;
        if(lb.getUname().equals("abc")&& lb.getUpass().equals("xyz"))
        {
           log.info("Login successful...redirecting to success page");
           log.info("Exiting execute");
           return mapping.findForward(SUCCESS);
        }
        else
        {
           log.info("Login failed...redirecting to failure page");
           log.info("Exiting execute");
           return mapping.findForward(FAILURE); 
        }
    }
}

Я получаю журналы, напечатанные вышекласс, но я не получаю никаких журналов от распорок, хотя я настроил регистратор для него. В основном я ищу журналы, как.

Initializing, config='org.apache.struts.taglib.html.LocalStrings', returnNull=true

1 Ответ

0 голосов
/ 12 ноября 2019

Struts 1.x использует commons-logging в качестве API регистрации. Чтобы использовать log4j2, вам нужно включить log4j-jcl jar в ваш путь к классам. Используйте следующую ссылку, чтобы загрузить jar.

log4j-jcl зависимость

Если после добавления log4j-jcl jar вы все еще не видите сообщение журнала, заменитефайл log4j2.properties с файлом log42.xml и добавьте приведенный ниже код в файл xml и посмотрите, видите ли вы сообщения журнала Struts в консоли. Если да, возможно, у вашей конфигурации log42.properties есть некоторые проблемы. (Я никогда не использовал файл свойств для настройки log4j, и это немного сбивает меня с толку по сравнению с xml config)

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
  <Appenders>
    <Console name="STDOUT" target="SYSTEM_OUT">
      <PatternLayout pattern="%m%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="DEBUG">
      <AppenderRef ref="STDOUT"/>
    </Root>
  </Loggers>
</Configuration>
...