001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache license, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the license for the specific language governing permissions and
015 * limitations under the license.
016 */
017
018package org.apache.logging.log4j.core.config;
019
020import java.util.Objects;
021
022import org.apache.logging.log4j.Level;
023import org.apache.logging.log4j.Marker;
024import org.apache.logging.log4j.core.LogEvent;
025import org.apache.logging.log4j.message.Message;
026import org.apache.logging.log4j.util.Supplier;
027
028/**
029 * Reliability strategy that assumes reconfigurations will never take place.
030 */
031public class DefaultReliabilityStrategy implements ReliabilityStrategy, LocationAwareReliabilityStrategy {
032
033    private final LoggerConfig loggerConfig;
034
035    public DefaultReliabilityStrategy(final LoggerConfig loggerConfig) {
036        this.loggerConfig = Objects.requireNonNull(loggerConfig, "loggerConfig is null");
037    }
038
039    /*
040     * (non-Javadoc)
041     *
042     * @see org.apache.logging.log4j.core.config.ReliabilityStrategy#log(org.apache.logging.log4j.util.Supplier,
043     * java.lang.String, java.lang.String, org.apache.logging.log4j.Marker, org.apache.logging.log4j.Level,
044     * org.apache.logging.log4j.message.Message, java.lang.Throwable)
045     */
046    @Override
047    public void log(final Supplier<LoggerConfig> reconfigured, final String loggerName, final String fqcn, final Marker marker, final Level level,
048            final Message data, final Throwable t) {
049        loggerConfig.log(loggerName, fqcn, marker, level, data, t);
050    }
051
052    /*
053     * (non-Javadoc)
054     *
055     * @see org.apache.logging.log4j.core.config.ReliabilityStrategy#log(org.apache.logging.log4j.util.Supplier,
056     * java.lang.String, java.lang.String, java.lang.StackTraceElement, org.apache.logging.log4j.Marker,
057     * org.apache.logging.log4j.Level, org.apache.logging.log4j.message.Message, java.lang.Throwable)
058     */
059    @Override
060    public void log(final Supplier<LoggerConfig> reconfigured, final String loggerName, final String fqcn,
061        final StackTraceElement location, final Marker marker, final Level level, final Message data,
062        final Throwable t) {
063        loggerConfig.log(loggerName, fqcn, location, marker, level, data, t);
064    }
065
066    /*
067     * (non-Javadoc)
068     *
069     * @see org.apache.logging.log4j.core.config.ReliabilityStrategy#log(org.apache.logging.log4j.util.Supplier,
070     * org.apache.logging.log4j.core.LogEvent)
071     */
072    @Override
073    public void log(final Supplier<LoggerConfig> reconfigured, final LogEvent event) {
074        loggerConfig.log(event);
075    }
076
077    /*
078     * (non-Javadoc)
079     *
080     * @see
081     * org.apache.logging.log4j.core.config.ReliabilityStrategy#beforeLogEvent(org.apache.logging.log4j.core.config.
082     * LoggerConfig, org.apache.logging.log4j.util.Supplier)
083     */
084    @Override
085    public LoggerConfig getActiveLoggerConfig(final Supplier<LoggerConfig> next) {
086        return this.loggerConfig;
087    }
088
089    /*
090     * (non-Javadoc)
091     *
092     * @see org.apache.logging.log4j.core.config.ReliabilityStrategy#afterLogEvent()
093     */
094    @Override
095    public void afterLogEvent() {
096        // no action
097    }
098
099    /*
100     * (non-Javadoc)
101     *
102     * @see org.apache.logging.log4j.core.config.ReliabilityStrategy#beforeStopAppenders()
103     */
104    @Override
105    public void beforeStopAppenders() {
106        // no action
107    }
108
109    /*
110     * (non-Javadoc)
111     *
112     * @see
113     * org.apache.logging.log4j.core.config.ReliabilityStrategy#beforeStopConfiguration(org.apache.logging.log4j.core
114     * .config.Configuration)
115     */
116    @Override
117    public void beforeStopConfiguration(final Configuration configuration) {
118        // no action
119    }
120
121}