001/** 002 * Logback: the reliable, generic, fast and flexible logging framework. 003 * Copyright (C) 1999-2015, QOS.ch. All rights reserved. 004 * 005 * This program and the accompanying materials are dual-licensed under 006 * either the terms of the Eclipse Public License v1.0 as published by 007 * the Eclipse Foundation 008 * 009 * or (per the licensee's choosing) 010 * 011 * under the terms of the GNU Lesser General Public License version 2.1 012 * as published by the Free Software Foundation. 013 */ 014package ch.qos.logback.core.rolling; 015 016import ch.qos.logback.core.FileAppender; 017import ch.qos.logback.core.rolling.helper.CompressionMode; 018import ch.qos.logback.core.rolling.helper.FileNamePattern; 019import ch.qos.logback.core.spi.ContextAwareBase; 020 021/** 022 * Implements methods common to most, it not all, rolling policies. Currently 023 * such methods are limited to a compression mode getter/setter. 024 * 025 * @author Ceki Gülcü 026 */ 027public abstract class RollingPolicyBase extends ContextAwareBase implements RollingPolicy { 028 protected CompressionMode compressionMode = CompressionMode.NONE; 029 030 FileNamePattern fileNamePattern; 031 // fileNamePatternStr is always slashified, see setter 032 protected String fileNamePatternStr; 033 034 private FileAppender<?> parent; 035 036 // use to name files within zip file, i.e. the zipEntry 037 FileNamePattern zipEntryFileNamePattern; 038 private boolean started; 039 040 /** 041 * Given the FileNamePattern string, this method determines the compression mode 042 * depending on last letters of the fileNamePatternStr. Patterns ending with .gz 043 * imply GZIP compression, endings with '.zip' imply ZIP compression. Otherwise 044 * and by default, there is no compression. 045 * 046 */ 047 protected void determineCompressionMode() { 048 if (fileNamePatternStr.endsWith(".gz")) { 049 addInfo("Will use gz compression"); 050 compressionMode = CompressionMode.GZ; 051 } else if (fileNamePatternStr.endsWith(".zip")) { 052 addInfo("Will use zip compression"); 053 compressionMode = CompressionMode.ZIP; 054 } else { 055 addInfo("No compression will be used"); 056 compressionMode = CompressionMode.NONE; 057 } 058 } 059 060 public void setFileNamePattern(String fnp) { 061 fileNamePatternStr = fnp; 062 } 063 064 public String getFileNamePattern() { 065 return fileNamePatternStr; 066 } 067 068 public CompressionMode getCompressionMode() { 069 return compressionMode; 070 } 071 072 public boolean isStarted() { 073 return started; 074 } 075 076 public void start() { 077 started = true; 078 } 079 080 public void stop() { 081 started = false; 082 } 083 084 public void setParent(FileAppender<?> appender) { 085 this.parent = appender; 086 } 087 088 public boolean isParentPrudent() { 089 return parent.isPrudent(); 090 } 091 092 public String getParentsRawFileProperty() { 093 return parent.rawFileProperty(); 094 } 095}