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/cpp/htmllayout.cpp
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
#include <log4cxx/logstring.h>
19
#include <log4cxx/htmllayout.h>
20
#include <log4cxx/spi/loggingevent.h>
21
#include <log4cxx/helpers/optionconverter.h>
22
#include <log4cxx/level.h>
23
#include <log4cxx/helpers/transform.h>
24
#include <log4cxx/helpers/iso8601dateformat.h>
25
#include <log4cxx/helpers/stringhelper.h>
26
#include <log4cxx/helpers/transcoder.h>
27
#include <log4cxx/helpers/date.h>
28
#include <log4cxx/private/layout_priv.h>
29
30
using namespace LOG4CXX_NS;
31
using namespace LOG4CXX_NS::helpers;
32
using namespace LOG4CXX_NS::spi;
33
34
struct HTMLLayout::HTMLLayoutPrivate
35
{
36
  HTMLLayoutPrivate()
37
3.76k
    : locationInfo(false)
38
3.76k
    , title(LOG4CXX_STR("Log4cxx Log Messages"))
39
3.76k
    , dateFormat()
40
3.76k
    , expectedPatternLength(100)
41
3.76k
    {}
42
43
  // Print no location info by default
44
  bool locationInfo; //= false
45
46
  LogString title;
47
48
  helpers::ISO8601DateFormat dateFormat;
49
50
  // Expected length of a formatted event excluding the message text
51
  size_t expectedPatternLength;
52
};
53
54
IMPLEMENT_LOG4CXX_OBJECT(HTMLLayout)
55
56
57
HTMLLayout::HTMLLayout()
58
3.76k
  : m_priv(std::make_unique<HTMLLayoutPrivate>())
59
3.76k
{
60
3.76k
  m_priv->dateFormat.setTimeZone(TimeZone::getGMT());
61
3.76k
  m_priv->expectedPatternLength = priv::doubledLayoutSize(getFormattedEventCharacterCount());
62
3.76k
}
Unexecuted instantiation: log4cxx::HTMLLayout::HTMLLayout()
log4cxx::HTMLLayout::HTMLLayout()
Line
Count
Source
58
3.76k
  : m_priv(std::make_unique<HTMLLayoutPrivate>())
59
3.76k
{
60
3.76k
  m_priv->dateFormat.setTimeZone(TimeZone::getGMT());
61
3.76k
  m_priv->expectedPatternLength = priv::doubledLayoutSize(getFormattedEventCharacterCount());
62
3.76k
}
63
64
3.76k
HTMLLayout::~HTMLLayout() {}
65
66
67
void HTMLLayout::setOption(const LogString& option,
68
  const LogString& value)
69
3.48k
{
70
71
3.48k
  if (StringHelper::equalsIgnoreCase(option,
72
3.48k
      LOG4CXX_STR("TITLE"), LOG4CXX_STR("title")))
73
1.45k
  {
74
1.45k
    setTitle(value);
75
1.45k
  }
76
2.02k
  else if (StringHelper::equalsIgnoreCase(option,
77
2.02k
      LOG4CXX_STR("LOCATIONINFO"), LOG4CXX_STR("locationinfo")))
78
2.02k
  {
79
2.02k
    setLocationInfo(OptionConverter::toBoolean(value, false));
80
2.02k
    m_priv->expectedPatternLength = priv::doubledLayoutSize(getFormattedEventCharacterCount());
81
2.02k
  }
82
3.48k
}
Unexecuted instantiation: log4cxx::HTMLLayout::setOption(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
log4cxx::HTMLLayout::setOption(std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&)
Line
Count
Source
69
3.48k
{
70
71
3.48k
  if (StringHelper::equalsIgnoreCase(option,
72
3.48k
      LOG4CXX_STR("TITLE"), LOG4CXX_STR("title")))
73
1.45k
  {
74
1.45k
    setTitle(value);
75
1.45k
  }
76
2.02k
  else if (StringHelper::equalsIgnoreCase(option,
77
2.02k
      LOG4CXX_STR("LOCATIONINFO"), LOG4CXX_STR("locationinfo")))
78
2.02k
  {
79
2.02k
    setLocationInfo(OptionConverter::toBoolean(value, false));
80
2.02k
    m_priv->expectedPatternLength = priv::doubledLayoutSize(getFormattedEventCharacterCount());
81
2.02k
  }
82
3.48k
}
83
84
void HTMLLayout::format( LOG4CXX_FORMAT_LAYOUT_FORMAL_PARAMETERS ) const
85
9.56k
{
86
9.56k
  auto& lsMsg = event->getRenderedMessage();
87
9.56k
  priv::reserveFormattedEvent(output, m_priv->expectedPatternLength, lsMsg.size());
88
9.56k
  output.append(LOG4CXX_EOL);
89
9.56k
  output.append(LOG4CXX_STR("<tr>"));
90
9.56k
  output.append(LOG4CXX_EOL);
91
9.56k
  output.append(LOG4CXX_STR("<td>"));
92
93
9.56k
  m_priv->dateFormat.format(output, event->getTimeStamp());
94
95
96
9.56k
  output.append(LOG4CXX_STR("</td>"));
97
9.56k
  output.append(LOG4CXX_EOL);
98
99
9.56k
  output.append(LOG4CXX_STR("<td title=\""));
100
9.56k
  LogString threadName(event->getThreadName());
101
9.56k
  Transform::appendEscapingAttribute(output, threadName);
102
9.56k
  output.append(LOG4CXX_STR(" thread\">"));
103
9.56k
  Transform::appendEscapingTags(output, threadName);
104
9.56k
  output.append(LOG4CXX_STR("</td>"));
105
9.56k
  output.append(LOG4CXX_EOL);
106
107
9.56k
  output.append(LOG4CXX_STR("<td title=\"Level\">"));
108
109
9.56k
  if (event->getLevel()->equals(Level::getDebug()))
110
5.79k
  {
111
5.79k
    output.append(LOG4CXX_STR("<font color=\"#339933\">"));
112
5.79k
    Transform::appendEscapingTags(output, event->getLevel()->toString());
113
5.79k
    output.append(LOG4CXX_STR("</font>"));
114
5.79k
  }
115
3.76k
  else if (event->getLevel()->isGreaterOrEqual(Level::getWarn()))
116
0
  {
117
0
    output.append(LOG4CXX_STR("<font color=\"#993300\"><strong>"));
118
0
    Transform::appendEscapingTags(output, event->getLevel()->toString());
119
0
    output.append(LOG4CXX_STR("</strong></font>"));
120
0
  }
121
3.76k
  else
122
3.76k
  {
123
3.76k
    Transform::appendEscapingTags(output, event->getLevel()->toString());
124
3.76k
  }
125
126
9.56k
  output.append(LOG4CXX_STR("</td>"));
127
9.56k
  output.append(LOG4CXX_EOL);
128
129
9.56k
  output.append(LOG4CXX_STR("<td title=\""));
130
9.56k
  Transform::appendEscapingAttribute(output, event->getLoggerName());
131
9.56k
  output.append(LOG4CXX_STR(" logger\">"));
132
9.56k
  Transform::appendEscapingTags(output, event->getLoggerName());
133
9.56k
  output.append(LOG4CXX_STR("</td>"));
134
9.56k
  output.append(LOG4CXX_EOL);
135
136
9.56k
  if (m_priv->locationInfo)
137
4.05k
  {
138
4.05k
    output.append(LOG4CXX_STR("<td>"));
139
4.05k
    const LocationInfo& locInfo = event->getLocationInformation();
140
4.05k
    LOG4CXX_DECODE_CHAR(fileName, locInfo.getFileName());
141
4.05k
    Transform::appendEscapingTags(output, fileName);
142
4.05k
    output.append(1, (logchar) 0x3A /* ':' */);
143
4.05k
    int line = event->getLocationInformation().getLineNumber();
144
145
4.05k
    if (line != 0)
146
4.05k
    {
147
4.05k
      StringHelper::toString(line, output);
148
4.05k
    }
149
150
4.05k
    output.append(LOG4CXX_STR("</td>"));
151
4.05k
    output.append(LOG4CXX_EOL);
152
4.05k
  }
153
154
9.56k
  output.append(LOG4CXX_STR("<td title=\"Message\">"));
155
9.56k
  Transform::appendEscapingTags(output, lsMsg);
156
9.56k
  output.append(LOG4CXX_STR("</td>"));
157
9.56k
  output.append(LOG4CXX_EOL);
158
9.56k
  output.append(LOG4CXX_STR("</tr>"));
159
9.56k
  output.append(LOG4CXX_EOL);
160
161
9.56k
  LogString ndcVal;
162
163
9.56k
  if (event->getNDC(ndcVal))
164
3.76k
  {
165
3.76k
    output.append(LOG4CXX_STR("<tr><td bgcolor=\"#EEEEEE\" "));
166
3.76k
    output.append(LOG4CXX_STR("style=\"font-size : xx-small;\" colspan=\"6\" "));
167
3.76k
    output.append(LOG4CXX_STR("title=\"Nested Diagnostic Context\">"));
168
3.76k
    output.append(LOG4CXX_STR("NDC: "));
169
3.76k
    Transform::appendEscapingTags(output, ndcVal);
170
3.76k
    output.append(LOG4CXX_STR("</td></tr>"));
171
3.76k
    output.append(LOG4CXX_EOL);
172
3.76k
  }
173
9.56k
}
Unexecuted instantiation: log4cxx::HTMLLayout::format(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::shared_ptr<log4cxx::spi::LoggingEvent> const&, log4cxx::helpers::Pool&) const
log4cxx::HTMLLayout::format(std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >&, std::__1::shared_ptr<log4cxx::spi::LoggingEvent> const&, log4cxx::helpers::Pool&) const
Line
Count
Source
85
9.56k
{
86
9.56k
  auto& lsMsg = event->getRenderedMessage();
87
9.56k
  priv::reserveFormattedEvent(output, m_priv->expectedPatternLength, lsMsg.size());
88
9.56k
  output.append(LOG4CXX_EOL);
89
9.56k
  output.append(LOG4CXX_STR("<tr>"));
90
9.56k
  output.append(LOG4CXX_EOL);
91
9.56k
  output.append(LOG4CXX_STR("<td>"));
92
93
9.56k
  m_priv->dateFormat.format(output, event->getTimeStamp());
94
95
96
9.56k
  output.append(LOG4CXX_STR("</td>"));
97
9.56k
  output.append(LOG4CXX_EOL);
98
99
9.56k
  output.append(LOG4CXX_STR("<td title=\""));
100
9.56k
  LogString threadName(event->getThreadName());
101
9.56k
  Transform::appendEscapingAttribute(output, threadName);
102
9.56k
  output.append(LOG4CXX_STR(" thread\">"));
103
9.56k
  Transform::appendEscapingTags(output, threadName);
104
9.56k
  output.append(LOG4CXX_STR("</td>"));
105
9.56k
  output.append(LOG4CXX_EOL);
106
107
9.56k
  output.append(LOG4CXX_STR("<td title=\"Level\">"));
108
109
9.56k
  if (event->getLevel()->equals(Level::getDebug()))
110
5.79k
  {
111
5.79k
    output.append(LOG4CXX_STR("<font color=\"#339933\">"));
112
5.79k
    Transform::appendEscapingTags(output, event->getLevel()->toString());
113
5.79k
    output.append(LOG4CXX_STR("</font>"));
114
5.79k
  }
115
3.76k
  else if (event->getLevel()->isGreaterOrEqual(Level::getWarn()))
116
0
  {
117
0
    output.append(LOG4CXX_STR("<font color=\"#993300\"><strong>"));
118
0
    Transform::appendEscapingTags(output, event->getLevel()->toString());
119
0
    output.append(LOG4CXX_STR("</strong></font>"));
120
0
  }
121
3.76k
  else
122
3.76k
  {
123
3.76k
    Transform::appendEscapingTags(output, event->getLevel()->toString());
124
3.76k
  }
125
126
9.56k
  output.append(LOG4CXX_STR("</td>"));
127
9.56k
  output.append(LOG4CXX_EOL);
128
129
9.56k
  output.append(LOG4CXX_STR("<td title=\""));
130
9.56k
  Transform::appendEscapingAttribute(output, event->getLoggerName());
131
9.56k
  output.append(LOG4CXX_STR(" logger\">"));
132
9.56k
  Transform::appendEscapingTags(output, event->getLoggerName());
133
9.56k
  output.append(LOG4CXX_STR("</td>"));
134
9.56k
  output.append(LOG4CXX_EOL);
135
136
9.56k
  if (m_priv->locationInfo)
137
4.05k
  {
138
4.05k
    output.append(LOG4CXX_STR("<td>"));
139
4.05k
    const LocationInfo& locInfo = event->getLocationInformation();
140
4.05k
    LOG4CXX_DECODE_CHAR(fileName, locInfo.getFileName());
141
4.05k
    Transform::appendEscapingTags(output, fileName);
142
4.05k
    output.append(1, (logchar) 0x3A /* ':' */);
143
4.05k
    int line = event->getLocationInformation().getLineNumber();
144
145
4.05k
    if (line != 0)
146
4.05k
    {
147
4.05k
      StringHelper::toString(line, output);
148
4.05k
    }
149
150
4.05k
    output.append(LOG4CXX_STR("</td>"));
151
4.05k
    output.append(LOG4CXX_EOL);
152
4.05k
  }
153
154
9.56k
  output.append(LOG4CXX_STR("<td title=\"Message\">"));
155
9.56k
  Transform::appendEscapingTags(output, lsMsg);
156
9.56k
  output.append(LOG4CXX_STR("</td>"));
157
9.56k
  output.append(LOG4CXX_EOL);
158
9.56k
  output.append(LOG4CXX_STR("</tr>"));
159
9.56k
  output.append(LOG4CXX_EOL);
160
161
9.56k
  LogString ndcVal;
162
163
9.56k
  if (event->getNDC(ndcVal))
164
3.76k
  {
165
3.76k
    output.append(LOG4CXX_STR("<tr><td bgcolor=\"#EEEEEE\" "));
166
3.76k
    output.append(LOG4CXX_STR("style=\"font-size : xx-small;\" colspan=\"6\" "));
167
3.76k
    output.append(LOG4CXX_STR("title=\"Nested Diagnostic Context\">"));
168
3.76k
    output.append(LOG4CXX_STR("NDC: "));
169
3.76k
    Transform::appendEscapingTags(output, ndcVal);
170
3.76k
    output.append(LOG4CXX_STR("</td></tr>"));
171
3.76k
    output.append(LOG4CXX_EOL);
172
3.76k
  }
173
9.56k
}
174
175
void HTMLLayout::appendHeader( LOG4CXX_APPEND_HEADER_FORMAL_PARAMETERS )
176
1.48k
{
177
1.48k
  output.append(LOG4CXX_STR("<!DOCTYPE HTML PUBLIC "));
178
1.48k
  output.append(LOG4CXX_STR("\"-//W3C//DTD HTML 4.01 Transitional//EN\" "));
179
1.48k
  output.append(LOG4CXX_STR("\"http://www.w3.org/TR/html4/loose.dtd\">"));
180
1.48k
  output.append(LOG4CXX_EOL);
181
1.48k
  output.append(LOG4CXX_STR("<html>"));
182
1.48k
  output.append(LOG4CXX_EOL);
183
1.48k
  output.append(LOG4CXX_STR("<head>"));
184
1.48k
  output.append(LOG4CXX_EOL);
185
1.48k
  output.append(LOG4CXX_STR("<title>"));
186
1.48k
  Transform::appendEscapingTags(output, m_priv->title);
187
1.48k
  output.append(LOG4CXX_STR("</title>"));
188
1.48k
  output.append(LOG4CXX_EOL);
189
1.48k
  output.append(LOG4CXX_STR("<style type=\"text/css\">"));
190
1.48k
  output.append(LOG4CXX_EOL);
191
1.48k
  output.append(LOG4CXX_STR("<!--"));
192
1.48k
  output.append(LOG4CXX_EOL);
193
1.48k
  output.append(LOG4CXX_STR("body, table {font-family: arial,sans-serif; font-size: x-small;}"));
194
1.48k
  output.append(LOG4CXX_EOL);
195
1.48k
  output.append(LOG4CXX_STR("th {background: #336699; color: #FFFFFF; text-align: left;}"));
196
1.48k
  output.append(LOG4CXX_EOL);
197
1.48k
  output.append(LOG4CXX_STR("-->"));
198
1.48k
  output.append(LOG4CXX_EOL);
199
1.48k
  output.append(LOG4CXX_STR("</style>"));
200
1.48k
  output.append(LOG4CXX_EOL);
201
1.48k
  output.append(LOG4CXX_STR("</head>"));
202
1.48k
  output.append(LOG4CXX_EOL);
203
1.48k
  output.append(LOG4CXX_STR("<body bgcolor=\"#FFFFFF\" topmargin=\"6\" leftmargin=\"6\">"));
204
1.48k
  output.append(LOG4CXX_EOL);
205
1.48k
  output.append(LOG4CXX_STR("<hr size=\"1\" noshade>"));
206
1.48k
  output.append(LOG4CXX_EOL);
207
1.48k
  output.append(LOG4CXX_STR("Log session start time "));
208
209
1.48k
  m_priv->dateFormat.format(output, Date::currentTime());
210
211
1.48k
  output.append(LOG4CXX_STR("<br>"));
212
1.48k
  output.append(LOG4CXX_EOL);
213
1.48k
  output.append(LOG4CXX_STR("<br>"));
214
1.48k
  output.append(LOG4CXX_EOL);
215
1.48k
  output.append(LOG4CXX_STR("<table cellspacing=\"0\" cellpadding=\"4\" border=\"1\" bordercolor=\"#224466\" width=\"100%\">"));
216
1.48k
  output.append(LOG4CXX_EOL);
217
1.48k
  output.append(LOG4CXX_STR("<tr>"));
218
1.48k
  output.append(LOG4CXX_EOL);
219
1.48k
  output.append(LOG4CXX_STR("<th>Time</th>"));
220
1.48k
  output.append(LOG4CXX_EOL);
221
1.48k
  output.append(LOG4CXX_STR("<th>Thread</th>"));
222
1.48k
  output.append(LOG4CXX_EOL);
223
1.48k
  output.append(LOG4CXX_STR("<th>Level</th>"));
224
1.48k
  output.append(LOG4CXX_EOL);
225
1.48k
  output.append(LOG4CXX_STR("<th>Logger</th>"));
226
1.48k
  output.append(LOG4CXX_EOL);
227
228
1.48k
  if (m_priv->locationInfo)
229
1.06k
  {
230
1.06k
    output.append(LOG4CXX_STR("<th>File:Line</th>"));
231
1.06k
    output.append(LOG4CXX_EOL);
232
1.06k
  }
233
234
1.48k
  output.append(LOG4CXX_STR("<th>Message</th>"));
235
1.48k
  output.append(LOG4CXX_EOL);
236
1.48k
  output.append(LOG4CXX_STR("</tr>"));
237
1.48k
  output.append(LOG4CXX_EOL);
238
1.48k
}
Unexecuted instantiation: log4cxx::HTMLLayout::appendHeader(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, log4cxx::helpers::Pool&)
log4cxx::HTMLLayout::appendHeader(std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >&, log4cxx::helpers::Pool&)
Line
Count
Source
176
1.48k
{
177
1.48k
  output.append(LOG4CXX_STR("<!DOCTYPE HTML PUBLIC "));
178
1.48k
  output.append(LOG4CXX_STR("\"-//W3C//DTD HTML 4.01 Transitional//EN\" "));
179
1.48k
  output.append(LOG4CXX_STR("\"http://www.w3.org/TR/html4/loose.dtd\">"));
180
1.48k
  output.append(LOG4CXX_EOL);
181
1.48k
  output.append(LOG4CXX_STR("<html>"));
182
1.48k
  output.append(LOG4CXX_EOL);
183
1.48k
  output.append(LOG4CXX_STR("<head>"));
184
1.48k
  output.append(LOG4CXX_EOL);
185
1.48k
  output.append(LOG4CXX_STR("<title>"));
186
1.48k
  Transform::appendEscapingTags(output, m_priv->title);
187
1.48k
  output.append(LOG4CXX_STR("</title>"));
188
1.48k
  output.append(LOG4CXX_EOL);
189
1.48k
  output.append(LOG4CXX_STR("<style type=\"text/css\">"));
190
1.48k
  output.append(LOG4CXX_EOL);
191
1.48k
  output.append(LOG4CXX_STR("<!--"));
192
1.48k
  output.append(LOG4CXX_EOL);
193
1.48k
  output.append(LOG4CXX_STR("body, table {font-family: arial,sans-serif; font-size: x-small;}"));
194
1.48k
  output.append(LOG4CXX_EOL);
195
1.48k
  output.append(LOG4CXX_STR("th {background: #336699; color: #FFFFFF; text-align: left;}"));
196
1.48k
  output.append(LOG4CXX_EOL);
197
1.48k
  output.append(LOG4CXX_STR("-->"));
198
1.48k
  output.append(LOG4CXX_EOL);
199
1.48k
  output.append(LOG4CXX_STR("</style>"));
200
1.48k
  output.append(LOG4CXX_EOL);
201
1.48k
  output.append(LOG4CXX_STR("</head>"));
202
1.48k
  output.append(LOG4CXX_EOL);
203
1.48k
  output.append(LOG4CXX_STR("<body bgcolor=\"#FFFFFF\" topmargin=\"6\" leftmargin=\"6\">"));
204
1.48k
  output.append(LOG4CXX_EOL);
205
1.48k
  output.append(LOG4CXX_STR("<hr size=\"1\" noshade>"));
206
1.48k
  output.append(LOG4CXX_EOL);
207
1.48k
  output.append(LOG4CXX_STR("Log session start time "));
208
209
1.48k
  m_priv->dateFormat.format(output, Date::currentTime());
210
211
1.48k
  output.append(LOG4CXX_STR("<br>"));
212
1.48k
  output.append(LOG4CXX_EOL);
213
1.48k
  output.append(LOG4CXX_STR("<br>"));
214
1.48k
  output.append(LOG4CXX_EOL);
215
1.48k
  output.append(LOG4CXX_STR("<table cellspacing=\"0\" cellpadding=\"4\" border=\"1\" bordercolor=\"#224466\" width=\"100%\">"));
216
1.48k
  output.append(LOG4CXX_EOL);
217
1.48k
  output.append(LOG4CXX_STR("<tr>"));
218
1.48k
  output.append(LOG4CXX_EOL);
219
1.48k
  output.append(LOG4CXX_STR("<th>Time</th>"));
220
1.48k
  output.append(LOG4CXX_EOL);
221
1.48k
  output.append(LOG4CXX_STR("<th>Thread</th>"));
222
1.48k
  output.append(LOG4CXX_EOL);
223
1.48k
  output.append(LOG4CXX_STR("<th>Level</th>"));
224
1.48k
  output.append(LOG4CXX_EOL);
225
1.48k
  output.append(LOG4CXX_STR("<th>Logger</th>"));
226
1.48k
  output.append(LOG4CXX_EOL);
227
228
1.48k
  if (m_priv->locationInfo)
229
1.06k
  {
230
1.06k
    output.append(LOG4CXX_STR("<th>File:Line</th>"));
231
1.06k
    output.append(LOG4CXX_EOL);
232
1.06k
  }
233
234
1.48k
  output.append(LOG4CXX_STR("<th>Message</th>"));
235
1.48k
  output.append(LOG4CXX_EOL);
236
1.48k
  output.append(LOG4CXX_STR("</tr>"));
237
1.48k
  output.append(LOG4CXX_EOL);
238
1.48k
}
239
240
void HTMLLayout::appendFooter( LOG4CXX_APPEND_FOOTER_FORMAL_PARAMETERS  )
241
0
{
242
0
  output.append(LOG4CXX_STR("</table>"));
243
0
  output.append(LOG4CXX_EOL);
244
0
  output.append(LOG4CXX_STR("<br>"));
245
0
  output.append(LOG4CXX_EOL);
246
0
  output.append(LOG4CXX_STR("</body></html>"));
247
0
}
Unexecuted instantiation: log4cxx::HTMLLayout::appendFooter(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, log4cxx::helpers::Pool&)
Unexecuted instantiation: log4cxx::HTMLLayout::appendFooter(std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >&, log4cxx::helpers::Pool&)
248
249
void HTMLLayout::setLocationInfo(bool locationInfoFlag)
250
2.02k
{
251
2.02k
  m_priv->locationInfo = locationInfoFlag;
252
2.02k
}
253
254
bool HTMLLayout::getLocationInfo() const
255
0
{
256
0
  return m_priv->locationInfo;
257
0
}
258
259
void HTMLLayout::setTitle(const LogString& title1)
260
1.45k
{
261
1.45k
  m_priv->title.assign(title1);
262
1.45k
}
Unexecuted instantiation: log4cxx::HTMLLayout::setTitle(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
log4cxx::HTMLLayout::setTitle(std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&)
Line
Count
Source
260
1.45k
{
261
1.45k
  m_priv->title.assign(title1);
262
1.45k
}
263
264
const LogString& HTMLLayout::getTitle() const
265
0
{
266
0
  return m_priv->title;
267
0
}
268
269
LogString HTMLLayout::getContentType() const
270
0
{
271
0
  return LOG4CXX_STR("text/html");
272
0
}
273
274
bool HTMLLayout::ignoresThrowable() const
275
0
{
276
0
  return false;
277
0
}