package com.l7tech.server.log;

import com.l7tech.common.log.SerializableFilter;
import com.l7tech.gateway.common.log.SinkConfiguration.RollingInterval;
import com.l7tech.util.ConfigurableLogFormatter;
import java.io.IOException;
import java.io.Serializable;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.StreamHandler;

public class LogFileConfiguration implements Serializable {
   private static final long serialVersionUID = 1L;
   private final String filepat;
   private final int limit;
   private final int count;
   private final boolean append;
   private final int level;
   private final String formatPattern;
   private final SerializableFilter filter;
   private final boolean rollingEnabled;
   private final RollingInterval rollingInterval;

   public LogFileConfiguration(
      String var1, int var2, int var3, boolean var4, int var5, String var6, SerializableFilter var7, boolean var8, RollingInterval var9
   ) {
      this.filepat = var1;
      this.limit = var2;
      this.count = var3;
      this.append = var4;
      this.level = var5;
      this.formatPattern = var6;
      this.filter = var7;
      this.rollingEnabled = var8;
      this.rollingInterval = var9;
   }

   public LogFileConfiguration(LogFileConfiguration var1, int var2) {
      this(
         var1.getFilepat(),
         var1.getLimit(),
         var1.getCount(),
         var1.isAppend(),
         var2,
         var1.getFormatPattern(),
         var1.getFilter(),
         var1.isRollingEnabled(),
         var1.getRollingInterval()
      );
   }

   public Handler buildFileHandler() throws IOException {
      StreamHandler var1;
      if (this.rollingEnabled) {
         var1 = new RollingFileHandler(this.filepat, this.rollingInterval);
      } else {
         var1 = new r(this.filepat, this.limit, this.count, this.append);
      }

      var1.setFormatter(new ConfigurableLogFormatter(this.formatPattern));
      var1.setLevel(Level.parse(Integer.toString(this.level)));
      var1.setFilter(this.filter);
      return var1;
   }

   public String getFilepat() {
      return this.filepat;
   }

   public int getLimit() {
      return this.limit;
   }

   public int getCount() {
      return this.count;
   }

   public boolean isAppend() {
      return this.append;
   }

   public int getLevel() {
      return this.level;
   }

   public String getFormatPattern() {
      return this.formatPattern;
   }

   public SerializableFilter getFilter() {
      return this.filter;
   }

   public boolean isRollingEnabled() {
      return this.rollingEnabled;
   }

   public RollingInterval getRollingInterval() {
      return this.rollingInterval;
   }
}
