Coverage Report

Created: 2026-09-01 07:26

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/logging-log4cxx/src/main/include/log4cxx/rolling/rollingpolicybase.h
Line
Count
Source
1
/*
2
 * Licensed to the Apache Software Foundation (ASF) under one or more
3
 * contributor license agreements.  See the NOTICE file distributed with
4
 * this work for additional information regarding copyright ownership.
5
 * The ASF licenses this file to You under the Apache License, Version 2.0
6
 * (the "License"); you may not use this file except in compliance with
7
 * the License.  You may obtain a copy of the License at
8
 *
9
 *      http://www.apache.org/licenses/LICENSE-2.0
10
 *
11
 * Unless required by applicable law or agreed to in writing, software
12
 * distributed under the License is distributed on an "AS IS" BASIS,
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
 * See the License for the specific language governing permissions and
15
 * limitations under the License.
16
 */
17
18
#if !defined(_LOG4CXX_ROLLING_ROLLING_POLICY_BASE_H)
19
#define _LOG4CXX_ROLLING_ROLLING_POLICY_BASE_H
20
21
#include <log4cxx/helpers/object.h>
22
#include <log4cxx/logger.h>
23
#include <log4cxx/logmanager.h>
24
#include <log4cxx/rolling/rollingpolicy.h>
25
#include <log4cxx/pattern/patternconverter.h>
26
#include <log4cxx/pattern/formattinginfo.h>
27
#include <log4cxx/pattern/patternparser.h>
28
29
namespace LOG4CXX_NS
30
{
31
namespace rolling
32
{
33
LOG4CXX_LIST_DEF(PatternConverterList, LOG4CXX_NS::pattern::PatternConverterPtr);
34
35
/**
36
 * Implements methods common to most, it not all, rolling
37
 * policies.
38
 *
39
 *
40
 *
41
 */
42
class LOG4CXX_EXPORT RollingPolicyBase
43
#if LOG4CXX_ABI_VERSION <= 15
44
  : public virtual RollingPolicy
45
  , public virtual helpers::Object
46
#else
47
  : public RollingPolicy
48
#endif
49
{
50
  protected:
51
    DECLARE_ABSTRACT_LOG4CXX_OBJECT(RollingPolicyBase)
52
3.41k
    BEGIN_LOG4CXX_CAST_MAP()
53
3.41k
    LOG4CXX_CAST_ENTRY(RollingPolicy)
54
3.41k
    LOG4CXX_CAST_ENTRY(spi::OptionHandler)
55
3.41k
    END_LOG4CXX_CAST_MAP()
56
57
    LOG4CXX_DECLARE_PRIVATE_MEMBER_PTR(RollingPolicyBasePrivate, m_priv)
58
59
  public:
60
    RollingPolicyBase();
61
    virtual ~RollingPolicyBase();
62
63
    using spi::OptionHandler::activateOptions;
64
    /**
65
    \copybrief spi::OptionHandler::activateOptions()
66
67
    Converts the file name pattern to a collection of formaters.
68
    */
69
    void activateOptions( LOG4CXX_ACTIVATE_OPTIONS_FORMAL_PARAMETERS  ) override;
70
71
    /**
72
    A map from a name to the object implementing the (date or index) formatting.
73
    */
74
    virtual pattern::PatternMap getFormatSpecifiers() const = 0;
75
76
77
    /**
78
    \copybrief spi::OptionHandler::setOption()
79
80
    Supported options | Supported values | Default value |
81
    :-------------- | :----------------: | :---------------: |
82
    FileNamePattern | (\ref legalChars "^") | - |
83
    CreateIntermediateDirectories | True,False | False |
84
85
    \anchor legalChars (^) Legal file name characters plus any conversion specifier supported by the concrete class.
86
87
    \sa getFormatSpecifiers()
88
    */
89
    void setOption(const LogString& option, const LogString& value) override;
90
91
    /**
92
     * Set file name pattern.
93
     * @param fnp file name pattern.
94
     */
95
    void setFileNamePattern(const LogString& fnp);
96
97
    /**
98
     * Get file name pattern.
99
     * @return file name pattern.
100
     */
101
    LogString getFileNamePattern() const;
102
103
    bool getCreateIntermediateDirectories() const;
104
    void setCreateIntermediateDirectories(bool createIntermediate);
105
106
    PatternConverterList getPatternConverterList() const;
107
108
  protected:
109
    RollingPolicyBase(LOG4CXX_PRIVATE_PTR(RollingPolicyBasePrivate) priv);
110
    /**
111
     *   Parse file name pattern.
112
     */
113
    void parseFileNamePattern();
114
115
    /**
116
     * Format file name.
117
     *
118
     * @param obj object to be evaluted in formatting, may not be null.
119
     * @param buf string buffer to which formatted file name is appended, may not be null.
120
     */
121
    void formatFileName(const helpers::ObjectPtr& obj, LogString& buf) const;
122
123
    LOG4CXX_NS::pattern::PatternConverterPtr getIntegerPatternConverter() const;
124
    LOG4CXX_NS::pattern::PatternConverterPtr getDatePatternConverter() const;
125
126
#if LOG4CXX_ABI_VERSION <= 15
127
    void formatFileName(const helpers::ObjectPtr& obj,
128
      LogString& buf, helpers::Pool& p) const;
129
#endif
130
};
131
132
LOG4CXX_PTR_DEF(RollingPolicyBase);
133
134
}
135
}
136
137
#endif