Невозможно записывать логи, используя RollingFileAppender в log4j2 - PullRequest
0 голосов
/ 13 июня 2019

Я делаю простой демонстрационный проект в Servlet 3.0 и Tomcat
Я принимаю запрос JSON от Почтальона и предоставляю ответ JSON.
Теперь я также хочу войти в свой проект.

Так что я должен использовать log4j2
Используемые банки : -
log4j-1.2.12.jar,
jackson-databind-2.6.3.jar,
jackson-core-2.6.3.jar

Код сервлета: -

@WebServlet("/StatusServlet")
public class TestingServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    Logger logger = Logger.getLogger(TestingServlet.class);

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub


        BasicConfigurator.configure();

        String requestData = request.getReader().lines().collect(Collectors.joining());
        System.out.println(requestData);

        // 2. initiate jackson mapper

            ObjectMapper mapper = new ObjectMapper();

            TestingPojo pojo = mapper.readValue(requestData, TestingPojo.class);

           logger.info("status "+pojo.getStatus());
            PrintWriter out = response.getWriter();
            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            mapper.writeValue(out, pojo.getStatus());
            out.flush(); 


    }

Каталог моих проектов: -

Webservice            
   |-src         
      |- com       
          |-test          
             TestingPojo.java               
             TestingServlet.java       
             log4j2.xml

Мой log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Configuration status="TRACE">
    <Properties>
        <Property name="logPath">/tmp</Property>
        <!-- <Property name="patternInfo">%d{dd/MMM/yyyy HH:mm:ss,SSS} %F : %C 
            : %M() : THREAD[%t] : LINE[%L] : [%m]%n</Property> -->
        <Property name="patternInfo">%d{dd/MMM/yyyy HH:mm:ss,SSS} %m%n</Property>
    </Properties>
    <Appenders>
        <RollingFile name="RollingFile" fileName="${logPath}/i-am.log"
            filePattern="${logPath}/webservice-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${patternInfo}" />
            <Policies>
                <SizeBasedTriggeringPolicy size="10MB" />
                <TimeBasedTriggeringPolicy interval="1"
                    modulate="true" />
            </Policies>
            <!-- <DefaultRolloverStrategy max="10 MB"/> -->
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="root" level="debug" additivity="false">
            <appender-ref ref="RollingFile" level="debug" />
        </Logger>
        <Root level="TRACE" additivity="false">
            <AppenderRef ref="RollingFile" />
        </Root>
    </Loggers>
</Configuration>

Когда я запускаю код в eclipse, я получаю журналы в консоли в формате шаблона.
Но когда я развертываю код на удаленном сервере, я не получаю журналы по указанному пути Rolling File Appender. Файл не создается.

Что-то не так с моими конфигурациями?
Также я использовал Basic Configurator.configure (), есть ли другой способ?

1 Ответ

0 голосов
/ 18 июня 2019

Я нашел ту же статью для вас. (Вам нужно сменить каталог на log4j2.xml)

Нажмите здесь !

Объяснение можно объяснить двумя способами,

  1. поместил log4j2.xml в путь к классу (рекомендуется)
  2. запустите tomcat с опцией ведения журнала jvm

Это не вопрос OP, но я надеюсь, вы напомнитеthis.

  • Пожалуйста, рассмотрите возможность добавления консоли Appender, было бы неплохо увидеть ее в консоли IDE.

  • Пожалуйста, рассмотрите возможность повторного использования ObjectMapper: Jackson-Performance , Javadoc

...