8000 Throw exception on nonexistent properties file. · log4cplus/log4cplus@9577c80 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9577c80

Browse files
committed
Throw exception on nonexistent properties file.
Implement #553.
1 parent 282dde8 commit 9577c80

File tree

14 files changed

+487
-291
lines changed

14 files changed

+487
-291
lines changed

Makefile.in

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,7 @@ am__objects_4 = src/liblog4cplus_la-appenderattachableimpl.lo \
297297
src/liblog4cplus_la-connectorthread.lo \
298298
src/liblog4cplus_la-consoleappender.lo \
299299
src/liblog4cplus_la-cygwin-win32.lo src/liblog4cplus_la-env.lo \
300+
src/liblog4cplus_la-exception.lo \
300301
src/liblog4cplus_la-factory.lo \
301302
src/liblog4cplus_la-fileappender.lo \
302303
src/liblog4cplus_la-fileinfo.lo src/liblog4cplus_la-filter.lo \
@@ -352,7 +353,8 @@ am__objects_7 = src/liblog4cplusU_la-appenderattachableimpl.lo \
352353
src/liblog4cplusU_la-connectorthread.lo \
353354
src/liblog4cplusU_la-consoleappender.lo \
354355
src/liblog4cplusU_la-cygwin-win32.lo \
355-
src/liblog4cplusU_la-env.lo src/liblog4cplusU_la-factory.lo \
356+
src/liblog4cplusU_la-env.lo src/liblog4cplusU_la-exception.lo \
357+
src/liblog4cplusU_la-factory.lo \
356358
src/liblog4cplusU_la-fileappender.lo \
357359
src/liblog4cplusU_la-fileinfo.lo \
358360
src/liblog4cplusU_la-filter.lo \
@@ -782,6 +784,7 @@ am__depfiles_remade = ./$(DEPDIR)/_log4cplusU_la-python_wrapU.Plo \
782784
src/$(DEPDIR)/liblog4cplusU_la-consoleappender.Plo \
783785
src/$(DEPDIR)/liblog4cplusU_la-cygwin-win32.Plo \
784786
src/$(DEPDIR)/liblog4cplusU_la-env.Plo \
787+
src/$(DEPDIR)/liblog4cplusU_la-exception.Plo \
785788
src/$(DEPDIR)/liblog4cplusU_la-factory.Plo \
786789
src/$(DEPDIR)/liblog4cplusU_la-fileappender.Plo \
787790
src/$(DEPDIR)/liblog4cplusU_la-fileinfo.Plo \
@@ -836,6 +839,7 @@ am__depfiles_remade = ./$(DEPDIR)/_log4cplusU_la-python_wrapU.Plo \
836839
src/$(DEPDIR)/liblog4cplus_la-consoleappender.Plo \
837840
src/$(DEPDIR)/liblog4cplus_la-cygwin-win32.Plo \
838841
src/$(DEPDIR)/liblog4cplus_la-env.Plo \
842+
src/$(DEPDIR)/liblog4cplus_la-exception.Plo \
839843
src/$(DEPDIR)/liblog4cplus_la-factory.Plo \
840844
src/$(DEPDIR)/liblog4cplus_la-fileappender.Plo \
841845
src/$(DEPDIR)/liblog4cplus_la-fileinfo.Plo \
@@ -1225,13 +1229,14 @@ SINGLE_THREADED_SRC = \
12251229
src/appenderattachableimpl.cxx \
12261230
src/appender.cxx \
12271231
src/asyncappender.cxx \
1228-
src/callbackappender.cxx \
1232+
src/callbackappender.cxx \
12291233
src/clogger.cxx \
12301234
src/configurator.cxx \
12311235
src/connectorthread.cxx \
12321236
src/consoleappender.cxx \
12331237
src/cygwin-win32.cxx \
12341238
src/env.cxx \
1239+
src/exception.cxx \
12351240
src/factory.cxx \
12361241
src/fileappender.cxx \
12371242
src/fileinfo.cxx \
@@ -1779,6 +1784,8 @@ src/liblog4cplus_la-cygwin-win32.lo: src/$(am__dirstamp) \
17791784
src/$(DEPDIR)/$(am__dirstamp)
17801785
src/liblog4cplus_la-env.lo: src/$(am__dirstamp) \
17811786
src/$(DEPDIR)/$(am__dirstamp)
1787+
src/liblog4cplus_la-exception.lo: src/$(am__dirstamp) \
1788+
src/$(DEPDIR)/$(am__dirstamp)
17821789
src/liblog4cplus_la-factory.lo: src/$(am__dirstamp) \
17831790
src/$(DEPDIR)/$(am__dirstamp)
17841791
src/liblog4cplus_la-fileappender.lo: src/$(am__dirstamp) \
@@ -1890,6 +1897,8 @@ src/liblog4cplusU_la-cygwin-win32.lo: src/$(am__dirstamp) \
18901897
src/$(DEPDIR)/$(am__dirstamp)
18911898
src/liblog4cplusU_la-env.lo: src/$(am__dirstamp) \
18921899
src/$(DEPDIR)/$(am__dirstamp)
1900+
src/liblog4cplusU_la-exception.lo: src/$(am__dirstamp) \
1901+
src/$(DEPDIR)/$(am__dirstamp)
18931902
src/liblog4cplusU_la-factory.lo: src/$(am__dirstamp) \
18941903
src/$(DEPDIR)/$(am__dirstamp)
18951904
src/liblog4cplusU_la-fileappender.lo: src/$(am__dirstamp) \
@@ -2437,6 +2446,7 @@ distclean-compile:
24372446
@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/liblog4cplusU_la-consoleappender.Plo@am__quote@ # am--include-marker
24382447
@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/liblog4cplusU_la-cygwin-win32.Plo@am__quote@ # am--include-marker
24392448
@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/liblog4cplusU_la-env.Plo@am__quote@ # am--include-marker
2449+
@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/liblog4cplusU_la-exception.Plo@am__quote@ # am--include-marker
24402450
@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/liblog4cplusU_la-factory.Plo@am__quote@ # am--include-marker
24412451
@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/liblog4cplusU_la-fileappender.Plo@am__quote@ # am--include-marker
24422452
@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/liblog4cplusU_la-fileinfo.Plo@am__quote@ # am--include-marker
@@ -2491,6 +2501,7 @@ distclean-compile:
24912501
@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/liblog4cplus_la-consoleappender.Plo@am__quote@ # am--include-marker
24922502
@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/liblog4cplus_la-cygwin-win32.Plo@am__quote@ # am--include-marker
24932503
@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/liblog4cplus_la-env.Plo@am__quote@ # am--include-marker
2504+
@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/liblog4cplus_la-exception.Plo@am__quote@ # am--include-marker
24942505
@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/liblog4cplus_la-factory.Plo@am__quote@ # am--include-marker
24952506
@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/liblog4cplus_la-fileappender.Plo@am__quote@ # am--include-marker
24962507
@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/liblog4cplus_la-fileinfo.Plo@am__quote@ # am--include-marker
@@ -2690,6 +2701,13 @@ src/liblog4cplus_la-env.lo: src/env.cxx
26902701
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
26912702
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblog4cplus_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/liblog4cplus_la-env.lo `test -f 'src/env.cxx' || echo '$(srcdir)/'`src/env.cxx
26922703

2704+
src/liblog4cplus_la-exception.lo: src/exception.cxx
2705+
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblog4cplus_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/liblog4cplus_la-exception.lo -MD -MP -MF src/$(DEPDIR)/liblog4cplus_la-exception.Tpo -c -o src/liblog4cplus_la-exception.lo `test -f 'src/exception.cxx' || echo '$(srcdir)/'`src/exception.cxx
2706+
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/liblog4cplus_la-exception.Tpo src/$(DEPDIR)/liblog4cplus_la-exception.Plo
2707+
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/exception.cxx' object='src/liblog4cplus_la-exception.lo' libtool=yes @AMDEPBACKSLASH@
2708+
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
2709+
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblog4cplus_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/liblog4cplus_la-exception.lo `test -f 'src/exception.cxx' || echo '$(srcdir)/'`src/exception.cxx
2710+
26932711
src/liblog4cplus_la-factory.lo: src/factory.cxx
26942712
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblog4cplus_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/liblog4cplus_la-factory.lo -MD -MP -MF src/$(DEPDIR)/liblog4cplus_la-factory.Tpo -c -o src/liblog4cplus_la-factory.lo `test -f 'src/factory.cxx' || echo '$(srcdir)/'`src/factory.cxx
26952713
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/liblog4cplus_la-factory.Tpo src/$(DEPDIR)/liblog4cplus_la-factory.Plo
@@ -3068,6 +3086,13 @@ src/liblog4cplusU_la-env.lo: src/env.cxx
30683086
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
30693087
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblog4cplusU_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/liblog4cplusU_la-env.lo `test -f 'src/env.cxx' || echo '$(srcdir)/'`src/env.cxx
30703088

3089+
src/liblog4cplusU_la-exception.lo: src/exception.cxx
3090+
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblog4cplusU_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/liblog4cplusU_la-exception.lo -MD -MP -MF src/$(DEPDIR)/liblog4cplusU_la-exception.Tpo -c -o src/liblog4cplusU_la-exception.lo `test -f 'src/exception.cxx' || echo '$(srcdir)/'`src/exception.cxx
3091+
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/liblog4cplusU_la-exception.Tpo src/$(DEPDIR)/liblog4cplusU_la-exception.Plo
3092+
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/exception.cxx' object='src/liblog4cplusU_la-exception.lo' libtool=yes @AMDEPBACKSLASH@
3093+
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
3094+
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblog4cplusU_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/liblog4cplusU_la-exception.lo `test -f 'src/exception.cxx' || echo '$(srcdir)/'`src/exception.cxx
3095+
30713096
src/liblog4cplusU_la-factory.lo: src/factory.cxx
30723097
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblog4cplusU_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/liblog4cplusU_la-factory.lo -MD -MP -MF src/$(DEPDIR)/liblog4cplusU_la-factory.Tpo -c -o src/liblog4cplusU_la-factory.lo `test -f 'src/factory.cxx' || echo '$(srcdir)/'`src/factory.cxx
30733098
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/liblog4cplusU_la-factory.Tpo src/$(DEPDIR)/liblog4cplusU_la-factory.Plo
@@ -3993,6 +4018,7 @@ distclean: distclean-recursive
39934018
-rm -f src/$(DEPDIR)/liblog4cplusU_la-consoleappender.Plo
39944019
-rm -f src/$(DEPDIR)/liblog4cplusU_la-cygwin-win32.Plo
39954020
-rm -f src/$(DEPDIR)/liblog4cplusU_la-env.Plo
4021+
-rm -f src/$(DEPDIR)/liblog4cplusU_la-exception.Plo
39964022
-rm -f src/$(DEPDIR)/liblog4cplusU_la-factory.Plo
39974023
-rm -f src/$(DEPDIR)/liblog4cplusU_la-fileappender.Plo
39984024
-rm -f src/$(DEPDIR)/liblog4cplusU_la-fileinfo.Plo
@@ -4047,6 +4073,7 @@ distclean: distclean-recursive
40474073
-rm -f src/$(DEPDIR)/liblog4cplus_la-consoleappender.Plo
40484074
-rm -f src/$(DEPDIR)/liblog4cplus_la-cygwin-win32.Plo
40494075
-rm -f src/$(DEPDIR)/liblog4cplus_la-env.Plo
4076+
-rm -f src/$(DEPDIR)/liblog4cplus_la-exception.Plo
40504077
-rm -f src/$(DEPDIR)/liblog4cplus_la-factory.Plo
40514078
-rm -f src/$(DEPDIR)/liblog4cplus_la-fileappender.Plo
40524079
-rm -f src/$(DEPDIR)/liblog4cplus_la-fileinfo.Plo
@@ -4196,6 +4223,7 @@ maintainer-clean: maintainer-clean-recursive
41964223
-rm -f src/$(DEPDIR)/liblog4cplusU_la-consoleappender.Plo
41974224
-rm -f src/$(DEPDIR)/liblog4cplusU_la-cygwin-win32.Plo
41984225
-rm -f src/$(DEPDIR)/liblog4cplusU_la-env.Plo
4226+
-rm -f src/$(DEPDIR)/liblog4cplusU_la-exception.Plo
41994227
-rm -f src/$(DEPDIR)/liblog4cplusU_la-factory.Plo
42004228
-rm -f src/$(DEPDIR)/liblog4cplusU_la-fileappender.Plo
42014229
-rm -f src/$(DEPDIR)/liblog4cplusU_la-fileinfo.Plo
@@ -4250,6 +4278,7 @@ maintainer-clean: maintainer-clean-recursive
42504278
-rm -f src/$(DEPDIR)/liblog4cplus_la-consoleappender.Plo
42514279
-rm -f src/$(DEPDIR)/liblog4cplus_la-cygwin-win32.Plo
42524280
-rm -f src/$(DEPDIR)/liblog4cplus_la-env.Plo
4281+
-rm -f src/$(DEPDIR)/liblog4cplus_la-exception.Plo
42534282
-rm -f src/$(DEPDIR)/liblog4cplus_la-factory.Plo
42544283
-rm -f src/$(DEPDIR)/liblog4cplus_la-fileappender.Plo
42554284
-rm -f src/$(DEPDIR)/liblog4cplus_la-fileinfo.Plo

include/Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ nobase_log4cplusinc_HEADERS = \
1616
log4cplus/config/windowsh-inc.h \
1717
log4cplus/configurator.h \
1818
log4cplus/consoleappender.h \
19+
log4cplus/exception.h \
1920
log4cplus/fileappender.h \
2021
log4cplus/fstreams.h \
2122
log4cplus/helpers/appenderattachableimpl.h \

include/Makefile.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,7 @@ nobase_log4cplusinc_HEADERS = \
374374
log4cplus/config/windowsh-inc.h \
375375
log4cplus/configurator.h \
376376
log4cplus/consoleappender.h \
377+
log4cplus/exception.h \
377378
log4cplus/fileappender.h \
378379
log4cplus/fstreams.h \
379380
log4cplus/helpers/appenderattachableimpl.h \

include/log4cplus/configurator.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ namespace log4cplus
9090
#if defined (LOG4CPLUS_HAVE_CODECVT_UTF32_FACET) && defined (UNICODE)
9191
, fUTF32 = (3 << fEncodingShift)
9292
#endif
93+
, fThrow = (1 << 5)
9394
};
9495

9596
// ctor and dtor

include/log4cplus/exception.h

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// Copyright (C) 2023, Vaclav Haisman. All rights reserved.
2+
//
3+
// Redistribution and use in source and binary forms, with or without modifica-
4+
// tion, are permitted provided that the following conditions are met:
5+
//
6+
// 1. Redistributions of source code must retain the above copyright notice,
7+
// this list of conditions and the following disclaimer.
8+
//
9+
// 2. Redistributions in binary form must reproduce the above copyright notice,
10+
// this list of conditions and the following disclaimer in the documentation
11+
// and/or other materials provided with the distribution.
12+
//
13+
// THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
14+
// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
15+
// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
16+
// APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
17+
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
18+
// DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
19+
// OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20+
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
22+
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23+
24+
#ifndef LOG4CPLUS_EXCEPTION_HXX
25+
#define LOG4CPLUS_EXCEPTION_HXX
26+
27+
#include <log4cplus/config.hxx>
28+
29+
#if defined (LOG4CPLUS_HAVE_PRAGMA_ONCE)
30+
#pragma once
31+
#endif
32+
33+
#include <log4cplus/tstring.h>
34+
#include <stdexcept>
35+
36+
37+
namespace log4cplus
38+
{
39+
40+
/**
41+
* \brief Exception class thrown by LogLog.
42+
* \sa helpers::LogLog
43+
*
44+
*/
45+
class LOG4CPLUS_EXPORT exception : public std::runtime_error
46+
{
47+
public:
48+
exception (tstring const &);
49+
exception (exception const &);
50+
exception & operator=(exception const &);
51+
virtual ~exception ();
52+
};
53+
54+
} // namespace log4cplus
55+
56+
#endif // LOG4CPLUS_EXCEPTION_HXX

include/log4cplus/helpers/property.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ namespace log4cplus {
6161
#if defined (LOG4CPLUS_HAVE_CODECVT_UTF32_FACET) && defined (UNICODE)
6262
, fUTF32 = (3 << fEncodingShift)
6363
#endif
64+
, fThrow = (1 << 5)
6465
};
6566

6667
Properties();

src/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ set (log4cplus_sources
99
consoleappender.cxx
1010
cygwin-win32.cxx
1111
env.cxx
12+
exception.cxx
1213
factory.cxx
1314
fileappender.cxx
1415
fileinfo.cxx
@@ -190,6 +191,7 @@ install(FILES ../include/log4cplus/appender.h
190191
../include/log4cplus/config.hxx
191192
../include/log4cplus/configurator.h
192193
../include/log4cplus/consoleappender.h
194+
../include/log4cplus/exception.h
193195
../include/log4cplus/fileappender.h
194196
../include/log4cplus/fstreams.h
195197
../include/log4cplus/hierarchy.h

src/Makefile.am

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ SINGLE_THREADED_SRC = \
44
%D%/appenderattachableimpl.cxx \
55
%D%/appender.cxx \
66
%D%/asyncappender.cxx \
7-
%D%/callbackappender.cxx \
7+
%D%/callbackappender.cxx \
88
%D%/clogger.cxx \
99
%D%/configurator.cxx \
1010
%D%/connectorthread.cxx \
1111
%D%/consoleappender.cxx \
1212
%D%/cygwin-win32.cxx \
1313
%D%/env.cxx \
14+
%D%/exception.cxx \
1415
%D%/factory.cxx \
1516
%D%/fileappender.cxx \
1617
%D%/fileinfo.cxx \

src/configurator.cxx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,30 +175,39 @@ namespace
175175
unsigned
176176
pcflag_to_pflags_encoding (unsigned pcflags)
177177
{
178+
unsigned pflags = 0;
178179
switch (pcflags
179180
& (PropertyConfigurator::fEncodingMask
180181
<< PropertyConfigurator::fEncodingShift))
181182
{
182183
#if defined (LOG4CPLUS_HAVE_CODECVT_UTF8_FACET) && defined (UNICODE)
183184
case PropertyConfigurator::fUTF8:
184-
return helpers::Properties::fUTF8;
185+
pflags |= helpers::Properties::fUTF8;
186+
break;
185187
#endif
186188

187189
#if (defined (LOG4CPLUS_HAVE_CODECVT_UTF16_FACET) || defined (WIN32)) \
188190
&& defined (UNICODE)
189191
case PropertyConfigurator::fUTF16:
190-
return helpers::Properties::fUTF16;
192+
pflags |= helpers::Properties::fUTF16;
193+
break;
191194
#endif
192195

193196
#if defined (LOG4CPLUS_HAVE_CODECVT_UTF32_FACET) && defined (UNICODE)
194197
case PropertyConfigurator::fUTF32:
195-
return helpers::Properties::fUTF32;
198+
pflags |= helpers::Properties::fUTF32;
199+
break;
196200
#endif
197201

198202
case PropertyConfigurator::fUnspecEncoding:;
199203
default:
200-
return 0;
204+
break;
201205
}
206+
207+
if ((pcflags & PropertyConfigurator::fThrow) != 0)
208+
pflags |= helpers::Properties::fThrow;
209+
210+
return pflags;
202211
}
203212

204213
} // namespace

src/exception.cxx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#include <log4cplus/exception.h>
2+
3+
namespace log4cplus {
4+
5+
exception::exception (tstring const & message)
6+
: std::runtime_error (LOG4CPLUS_TSTRING_TO_STRING (message).c_str ())
7+
{ }
8+
9+
exception::exception (exception const &) = default;
10+
11+
exception & exception::operator=(exception const &) = default;
12+
13+
exception::~exception ()
14+
{ }
15+
16+
} // namespace log4cplus

src/loglog.cxx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include <log4cplus/thread/threads.h>
2525
#include <log4cplus/internal/env.h>
2626
#include <log4cplus/consoleappender.h>
27+
#include <log4cplus/exception.h>
2728
#include <ostream>
2829
#include <stdexcept>
2930

@@ -181,7 +182,7 @@ LogLog::logging_worker (tostream & os, bool (LogLog:: * cond) () const,
181182
}
182183

183184
if (LOG4CPLUS_UNLIKELY (throw_flag))
184-
throw std::runtime_error (LOG4CPLUS_TSTRING_TO_STRING (msg));
185+
throw log4cplus::exception (msg);
185186
}
186187

187188

src/property.cxx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,15 @@
3434
#include <locale>
3535
#include <fstream>
3636
#include <sstream>
37+
#include <iostream>
3738
#include <log4cplus/streams.h>
3839
#include <log4cplus/fstreams.h>
3940
#include <log4cplus/helpers/stringhelper.h>
4041
#include <log4cplus/helpers/property.h>
4142
#include <log4cplus/internal/internal.h>
4243
#include <log4cplus/internal/env.h>
4344
#include <log4cplus/helpers/loglog.h>
45+
#include <log4cplus/exception.h>
4446

4547
#if defined (LOG4CPLUS_WITH_UNIT_TESTS)
4648
#include <catch.hpp>
@@ -162,7 +164,7 @@ imbue_file_from_flags (tistream & file, unsigned flags)
162164
// TODO: This should actually be a custom "null" facet
163165
// that just copies the chars to wchar_t buffer.
164166
new std::codecvt<wchar_t, char, std::mbstate_t>));
165-
break;
167+
break;
166168

167169
#endif
168170

@@ -219,7 +221,7 @@ Properties::Properties(const tstring& inputFile, unsigned f)
219221
std::ios::binary);
220222
if (! file.good ())
221223
helpers::getLogLog ().error (LOG4CPLUS_TEXT ("could not open file ")
222-
+ inputFile);
224+
+ inputFile, (flags & Properties::fThrow) != 0);
223225

224226
init(file);
225227
}
@@ -537,6 +539,14 @@ CATCH_TEST_CASE ("Properties", "[properties]")
537539
CATCH_REQUIRE (std::find (std::begin (names), std::end (names),
538540
PROP_SECOND) != std::end (names));
539541
}
542+
543+
CATCH_SECTION ("throw on nonexistent file")
544+
{
545+
auto && f = [] {
546+
Properties props (LOG4CPLUS_TEXT ("xxx does not exist"), Properties::fThrow);
547+
};
548+
CATCH_REQUIRE_THROWS_AS (f (), log4cplus::exception);
549+
}
540550
}
541551
#endif
542552

0 commit comments

Comments
 (0)
0