Skip to content

Commit e9e2be9

Browse files
committed
Merge branch 'master' into travisRunTesting
2 parents 9c074b2 + 537c27a commit e9e2be9

File tree

70 files changed

+2925
-2077
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+2925
-2077
lines changed

src/Core/Application/Application.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ class SCISHARE Application : boost::noncopyable //: public EventHandler, public
7373

7474
boost::filesystem::path executablePath() const;
7575
boost::filesystem::path configDirectory() const;
76+
boost::filesystem::path logDirectory() const { return configDirectory(); }
7677
bool get_user_directory( boost::filesystem::path& user_dir, bool config_path) const;
7778
bool get_config_directory( boost::filesystem::path& config_dir ) const;
7879
bool get_user_name( std::string& user_name ) const;

src/Core/Logging/Log.cc

Lines changed: 86 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,62 @@ namespace SCIRun
7373
{
7474
namespace Logging
7575
{
76+
class Log4cppAppenderAdaptor : public log4cpp::Appender
77+
{
78+
public:
79+
explicit Log4cppAppenderAdaptor(LogAppenderStrategyPtr appender, const std::string& name)
80+
: log4cpp::Appender(name), appender_(appender)
81+
{}
82+
83+
virtual void doAppend(const log4cpp::LoggingEvent& event) override
84+
{
85+
if (layout_)
86+
appender_->log4(layout_->format(event));
87+
else
88+
appender_->log4(event.message);
89+
}
90+
91+
virtual bool reopen() override
92+
{
93+
return true;
94+
}
95+
96+
virtual void close() override
97+
{
98+
}
99+
100+
virtual bool requiresLayout() const override
101+
{
102+
return false;
103+
}
104+
105+
virtual void setLayout(log4cpp::Layout* layout) override
106+
{
107+
layout_.reset(layout);
108+
}
109+
110+
virtual void setThreshold(log4cpp::Priority::Value priority) override
111+
{
112+
}
113+
114+
virtual log4cpp::Priority::Value getThreshold() override
115+
{
116+
return log4cpp::Priority::INFO;
117+
}
118+
119+
virtual void setFilter(log4cpp::Filter* filter) override
120+
{
121+
}
122+
123+
virtual log4cpp::Filter* getFilter() override
124+
{
125+
return nullptr;
126+
}
127+
private:
128+
LogAppenderStrategyPtr appender_;
129+
std::unique_ptr<log4cpp::Layout> layout_;
130+
};
131+
76132
class LogStreamImpl
77133
{
78134
public:
@@ -85,13 +141,13 @@ namespace SCIRun
85141
public:
86142
LogImpl() : name_("root"), cppLogger_(log4cpp::Category::getRoot()), latestStream_(new LogStreamImpl(cppLogger_.infoStream()))
87143
{
88-
setAppenders();
144+
setBasicAppenders();
89145
}
90146

91147
explicit LogImpl(const std::string& name) : name_(name), cppLogger_(log4cpp::Category::getInstance(name)), latestStream_(new LogStreamImpl(cppLogger_.infoStream()))
92148
{
93149
/// @todo
94-
setAppenders();
150+
//setBasicAppenders();
95151
cppLogger_.setAdditivity(false);
96152
cppLogger_.setPriority(log4cpp::Priority::INFO); //?
97153
}
@@ -122,6 +178,12 @@ namespace SCIRun
122178
latestStream_.flush();
123179
}
124180

181+
void addCustomAppender(Log4cppAppenderAdaptor* appender)
182+
{
183+
trySetPattern(appender);
184+
cppLogger_.addAppender(appender);
185+
}
186+
125187
log4cpp::Priority::PriorityLevel translate(LogLevel level)
126188
{
127189
// Translate pix logging level to cpp logging level
@@ -153,45 +215,36 @@ namespace SCIRun
153215
log4cpp::Category& cppLogger_;
154216
Log::Stream latestStream_;
155217

156-
void setAppenders()
218+
void setBasicAppenders()
157219
{
158-
std::string pattern("%d{%Y-%m-%d %H:%M:%S.%l} %c [%p] %m%n");
159-
160220
log4cpp::Appender *appender1 = new log4cpp::OstreamAppender("console", &std::cout);
161-
auto layout1 = new log4cpp::PatternLayout();
162-
std::string backupPattern1 = layout1->getConversionPattern();
163-
try
164-
{
165-
layout1->setConversionPattern(pattern);
166-
}
167-
catch (log4cpp::ConfigureFailure& exception)
168-
{
169-
/// @todo: log?
170-
std::cerr << "Caught ConfigureFailure exception: " << exception.what() << std::endl
171-
<< "Restoring original pattern: (" << backupPattern1 << ")" << std::endl;
172-
layout1->setConversionPattern(backupPattern1);
173-
}
174-
appender1->setLayout(layout1);
221+
trySetPattern(appender1);
175222

176223
file_ = Log::logDirectory() / ("scirun5_" + name_ + ".log");
177224
log4cpp::Appender *appender2 = new log4cpp::FileAppender("default", file_.string());
178-
auto layout2 = new log4cpp::PatternLayout();
179-
std::string backupPattern2 = layout1->getConversionPattern();
225+
trySetPattern(appender2);
226+
227+
cppLogger_.addAppender(appender1);
228+
cppLogger_.addAppender(appender2);
229+
}
230+
231+
void trySetPattern(log4cpp::Appender* appender)
232+
{
233+
static const std::string pattern("%d{%Y-%m-%d %H:%M:%S.%l} %c [%p] %m%n");
234+
std::unique_ptr<log4cpp::PatternLayout> layout(new log4cpp::PatternLayout());
235+
std::string backupPattern = layout->getConversionPattern();
180236
try
181237
{
182-
layout2->setConversionPattern(pattern);
238+
layout->setConversionPattern(pattern);
183239
}
184240
catch (log4cpp::ConfigureFailure& exception)
185241
{
186242
/// @todo: log?
187243
std::cerr << "Caught ConfigureFailure exception: " << exception.what() << std::endl
188-
<< "Restoring original pattern: (" << backupPattern2 << ")" << std::endl;
189-
layout2->setConversionPattern(backupPattern2);
244+
<< "Restoring original pattern: (" << backupPattern << ")" << std::endl;
245+
layout->setConversionPattern(backupPattern);
190246
}
191-
appender2->setLayout(layout2);
192-
193-
cppLogger_.addAppender(appender1);
194-
cppLogger_.addAppender(appender2);
247+
appender->setLayout(layout.release());
195248
}
196249
};
197250
}
@@ -250,6 +303,11 @@ void Log::log(LogLevel level, const std::string& msg)
250303
impl_->log(level, msg);
251304
}
252305

306+
void Log::addCustomAppender(boost::shared_ptr<LogAppenderStrategy> appender)
307+
{
308+
impl_->addCustomAppender(new Log4cppAppenderAdaptor(appender, "custom"));
309+
}
310+
253311
Log::Stream& SCIRun::Core::Logging::operator<<(Log& log, LogLevel level)
254312
{
255313
return log.impl_->stream(level);

src/Core/Logging/Log.h

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,16 @@ namespace SCIRun
6262
NOTSET
6363
};
6464

65-
class SCISHARE Log /*final*/
65+
class SCISHARE LogAppenderStrategy
66+
{
67+
public:
68+
virtual ~LogAppenderStrategy() {}
69+
virtual void log4(const std::string& message) const = 0;
70+
};
71+
72+
typedef boost::shared_ptr<LogAppenderStrategy> LogAppenderStrategyPtr;
73+
74+
class SCISHARE Log final
6675
{
6776
public:
6877
static Log& get();
@@ -90,14 +99,15 @@ namespace SCIRun
9099
void setVerbose(bool v);
91100
bool verbose() const;
92101
void flush();
102+
void addCustomAppender(LogAppenderStrategyPtr appender);
93103

94104
private:
95105
Log();
96106
explicit Log(const std::string& name);
97-
Log(const Log&)/* =delete*/;
98-
Log(Log&&)/* =delete*/;
99-
Log& operator=(const Log&)/* =delete*/;
100-
Log& operator=(Log&&)/* =delete*/;
107+
Log(const Log&) = delete;
108+
Log(Log&&) = delete;
109+
Log& operator=(const Log&) = delete;
110+
Log& operator=(Log&&) = delete;
101111

102112
static boost::filesystem::path directory_;
103113
private:

src/Dataflow/Network/NetworkSettings.cc

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,3 @@ void NetworkGlobalSettings::setValue(const std::string& key, const std::string&
4242
{
4343
settings_[key] = value;
4444
}
45-
46-
NetworkPathSettings::NetworkPathSettings(const NetworkGlobalSettings& globalSettings) : settings_(globalSettings) {}
47-
48-
boost::filesystem::path NetworkPathSettings::regressionTestDataDirectory() const
49-
{
50-
return settings_.value("regressionTestDataDir");
51-
}

src/Dataflow/Network/NetworkSettings.h

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,15 @@ namespace Networks {
5151
std::map<std::string,std::string> settings_;
5252
};
5353

54-
class SCISHARE NetworkPathSettings
55-
{
56-
public:
57-
explicit NetworkPathSettings(const NetworkGlobalSettings& globalSettings);
58-
boost::filesystem::path regressionTestDataDirectory() const;
59-
private:
60-
const NetworkGlobalSettings& settings_;
61-
};
54+
//TODO: class may be useful later--keep as a reminder to extract this functionality when we add more path settings.
55+
//class SCISHARE NetworkPathSettings
56+
//{
57+
//public:
58+
// explicit NetworkPathSettings(const NetworkGlobalSettings& globalSettings);
59+
// boost::filesystem::path regressionTestDataDirectory() const;
60+
//private:
61+
// const NetworkGlobalSettings& settings_;
62+
//};
6263

6364
}}}
6465

src/ExampleNets/regression/2ObjectsView_new_dynamic.srn5

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
22
<!DOCTYPE boost_serialization>
3-
<boost_serialization signature="serialization::archive" version="10">
3+
<boost_serialization signature="serialization::archive" version="12">
44
<networkFile class_id="0" tracking_level="0" version="3">
55
<networkInfo class_id="1" tracking_level="0" version="0">
66
<modules class_id="2" tracking_level="0" version="0">
@@ -50,7 +50,7 @@
5050
<name>PadPercent</name>
5151
<value>
5252
<which>1</which>
53-
<value>0</value>
53+
<value>0.00000000000000000e+00</value>
5454
</value>
5555
</second>
5656
</item>
@@ -138,7 +138,7 @@
138138
<name>PadPercent</name>
139139
<value>
140140
<which>1</which>
141-
<value>0</value>
141+
<value>0.00000000000000000e+00</value>
142142
</value>
143143
</second>
144144
</item>
@@ -238,7 +238,7 @@
238238
<name>FaceTransparencyValue</name>
239239
<value>
240240
<which>1</which>
241-
<value>0.5</value>
241+
<value>5.00000000000000000e-01</value>
242242
</value>
243243
</second>
244244
</item>
@@ -374,7 +374,7 @@
374374
<name>FaceTransparencyValue</name>
375375
<value>
376376
<which>1</which>
377-
<value>0.5</value>
377+
<value>5.00000000000000000e-01</value>
378378
</value>
379379
</second>
380380
</item>
@@ -586,50 +586,50 @@
586586
<item class_id="16" tracking_level="0" version="0">
587587
<first>CreateLatVol:3</first>
588588
<second class_id="17" tracking_level="0" version="0">
589-
<first>-768</first>
590-
<second>-433</second>
589+
<first>-7.68000000000000000e+02</first>
590+
<second>-4.33000000000000000e+02</second>
591591
</second>
592592
</item>
593593
<item>
594594
<first>CreateLatVol:4</first>
595595
<second>
596-
<first>-1034</first>
597-
<second>-439</second>
596+
<first>-1.03400000000000000e+03</first>
597+
<second>-4.39000000000000000e+02</second>
598598
</second>
599599
</item>
600600
<item>
601601
<first>ShowField:8</first>
602602
<second>
603-
<first>-1041</first>
604-
<second>-318</second>
603+
<first>-1.04100000000000000e+03</first>
604+
<second>-3.18000000000000000e+02</second>
605605
</second>
606606
</item>
607607
<item>
608608
<first>ShowField:9</first>
609609
<second>
610-
<first>-782</first>
611-
<second>-317</second>
610+
<first>-7.82000000000000000e+02</first>
611+
<second>-3.17000000000000000e+02</second>
612612
</second>
613613
</item>
614614
<item>
615615
<first>ViewScene:5</first>
616616
<second>
617-
<first>-1110</first>
618-
<second>-166</second>
617+
<first>-1.11000000000000000e+03</first>
618+
<second>-1.66000000000000000e+02</second>
619619
</second>
620620
</item>
621621
<item>
622622
<first>ViewScene:6</first>
623623
<second>
624-
<first>-741</first>
625-
<second>-200</second>
624+
<first>-7.41000000000000000e+02</first>
625+
<second>-2.00000000000000000e+02</second>
626626
</second>
627627
</item>
628628
<item>
629629
<first>ViewScene:7</first>
630630
<second>
631-
<first>-802</first>
632-
<second>-37</second>
631+
<first>-8.02000000000000000e+02</first>
632+
<second>-3.70000000000000000e+01</second>
633633
</second>
634634
</item>
635635
</modulePositions>

0 commit comments

Comments
 (0)