Как искать в еженедельных Rollovered Wso2 журналы? - PullRequest
0 голосов
/ 14 мая 2018


Я хотел бы, чтобы wso2 осуществлял поиск по моим еженедельным свернутым журналам, но он ищет по ежедневным журналам.
Я создал собственный пользовательский appender и добавил jar в папку lib в Carbon home, а затем добавил ниже свойства log4j. Теперь он может катиться еженедельно.
Как я могу настроить wso2 для поиска в моем журнале?
Спасибо за вашу помощь.


Мой пользовательский appender:

package com.org.gateway.common.log;

import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.spi.LoggingEvent;
import org.wso2.carbon.context.CarbonContext;
import org.wso2.carbon.utils.logging.LoggingUtils;
import org.wso2.carbon.utils.logging.TenantAwareLoggingEvent;

import java.io.File;
import java.io.IOException;
import java.security.AccessController;
import java.security.PrivilegedAction;

public class CustomAppender extends DailyRollingFileAppender {
    private static final String LOG_FILE_PATH = org.wso2.carbon.utils.CarbonUtils.getCarbonHome() + File.separator + "repository" +
            File.separator + "logs" + File.separator + "messages" + File.separator;

    protected boolean fileAppend = true;
    protected int bufferSize = 8 * 1024;
    protected boolean bufferedIO = false;

    @Override
    protected void subAppend(LoggingEvent loggingEvent) {
        Object tenantIdObj = AccessController.doPrivileged(new PrivilegedAction() {
            public Integer run() {
                return CarbonContext.getThreadLocalCarbonContext().getTenantId();
            }
        });
        int tenantId = (Integer) tenantIdObj;
        String logFileName = "test_file";
        try {
            this.setFile(LOG_FILE_PATH + logFileName, this.fileAppend, this.bufferedIO, this.bufferSize);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        String serviceName = CarbonContext.getThreadLocalCarbonContext().getApplicationName();

        final TenantAwareLoggingEvent tenantAwareLoggingEvent = LoggingUtils
                .getTenantAwareLogEvent(loggingEvent, tenantId, serviceName);
        AccessController.doPrivileged(new PrivilegedAction() {
            public Void run() {
                CustomAppender.super.subAppend(tenantAwareLoggingEvent);
                return null; // nothing to return
            }
        });
    }
}

Я добавил эти строки в log4j.properties
log4j.properties:

log4j.category.SERVICE_LOGGER=INFO, NEW_CARBON_LOGFILE
log4j.additivity.SERVICE_LOGGER=false
log4j.appender.NEW_CARBON_LOGFILE=com.org.gateway.common.log.CustomAppender
log4j.appender.NEW_CARBON_LOGFILE.File=${carbon.home}/repository/logs/${instance.log}/wso2carbon${instance.log}.log
log4j.appender.NEW_CARBON_LOGFILE.Append=true
log4j.appender.NEW_CARBON_LOGFILE.layout=org.wso2.carbon.utils.logging.TenantAwarePatternLayout
log4j.appender.NEW_CARBON_LOGFILE.layout.ConversionPattern=TID: [%T] [%S] [%d] %P%5p {%c} - %x %m {%c}%n
log4j.appender.NEW_CARBON_LOGFILE.layout.TenantPattern=%U%@%D [%T] [%S]
log4j.appender.NEW_CARBON_LOGFILE.threshold=INFO
log4j.appender.NEW_CARBON_LOGFILE.DatePattern='.'yyyy-ww
...