Coverage Report

Created: 2025-12-11 06:34

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