Logback: the reliable, generic, fast and flexible logging framework. Copyright (C) 1999-2015, QOS.ch. All rights reserved. This program and the accompanying materials are dual-licensed under either the terms of the Eclipse Public License v1.0 as published by the Eclipse Foundation or (per the licensee's choosing) under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation.
/** * Logback: the reliable, generic, fast and flexible logging framework. * Copyright (C) 1999-2015, QOS.ch. All rights reserved. * * This program and the accompanying materials are dual-licensed under * either the terms of the Eclipse Public License v1.0 as published by * the Eclipse Foundation * * or (per the licensee's choosing) * * under the terms of the GNU Lesser General Public License version 2.1 * as published by the Free Software Foundation. */
package ch.qos.logback.core.rolling.helper; import java.util.Date; import java.util.List; import java.util.TimeZone; import ch.qos.logback.core.CoreConstants; import ch.qos.logback.core.pattern.DynamicConverter; import ch.qos.logback.core.util.CachingDateFormatter; import ch.qos.logback.core.util.DatePatternToRegexUtil;
Returns a date formatted by SimpleDateFormatter.
Author:Ceki Gülcü
/** * Returns a date formatted by SimpleDateFormatter. * * @author Ceki Gülcü */
public class DateTokenConverter<E> extends DynamicConverter<E> implements MonoTypedConverter {
The conversion word/character with which this converter is registered.
/** * The conversion word/character with which this converter is registered. */
public final static String CONVERTER_KEY = "d"; public final static String AUXILIARY_TOKEN = "AUX"; public static final String DEFAULT_DATE_PATTERN = CoreConstants.DAILY_DATE_PATTERN; private String datePattern; private TimeZone timeZone; private CachingDateFormatter cdf; // is this token converter primary or auxiliary? Only the primary converter // determines the rolling period private boolean primary = true; public void start() { this.datePattern = getFirstOption(); if (this.datePattern == null) { this.datePattern = DEFAULT_DATE_PATTERN; } final List<String> optionList = getOptionList(); if (optionList != null) { for (int optionIndex = 1; optionIndex < optionList.size(); optionIndex++) { String option = optionList.get(optionIndex); if (AUXILIARY_TOKEN.equalsIgnoreCase(option)) { primary = false; } else { timeZone = TimeZone.getTimeZone(option); } } } cdf = new CachingDateFormatter(datePattern); if (timeZone != null) { cdf.setTimeZone(timeZone); } } public String convert(Date date) { return cdf.format(date.getTime()); } public String convert(Object o) { if (o == null) { throw new IllegalArgumentException("Null argument forbidden"); } if (o instanceof Date) { return convert((Date) o); } throw new IllegalArgumentException("Cannot convert " + o + " of type" + o.getClass().getName()); }
Return the date pattern.
/** * Return the date pattern. */
public String getDatePattern() { return datePattern; } public TimeZone getTimeZone() { return timeZone; } public boolean isApplicable(Object o) { return (o instanceof Date); } public String toRegex() { DatePatternToRegexUtil datePatternToRegexUtil = new DatePatternToRegexUtil(datePattern); return datePatternToRegexUtil.toRegex(); } public boolean isPrimary() { return primary; } }