mirror of
				https://github.com/pocoproject/poco.git
				synced 2025-10-30 05:29:41 +01:00 
			
		
		
		
	#2989: setting priorityNames property on PatternFormatter has no effect
This commit is contained in:
		| @@ -143,6 +143,8 @@ private: | |||||||
|  |  | ||||||
| 	void parsePriorityNames(); | 	void parsePriorityNames(); | ||||||
|  |  | ||||||
|  | 	static const std::string DEFAULT_PRIORITY_NAMES; | ||||||
|  |  | ||||||
| 	std::vector<PatternAction> _patternActions; | 	std::vector<PatternAction> _patternActions; | ||||||
| 	bool _localTime; | 	bool _localTime; | ||||||
| 	std::string _pattern; | 	std::string _pattern; | ||||||
|   | |||||||
| @@ -31,10 +31,11 @@ namespace Poco { | |||||||
| const std::string PatternFormatter::PROP_PATTERN = "pattern"; | const std::string PatternFormatter::PROP_PATTERN = "pattern"; | ||||||
| const std::string PatternFormatter::PROP_TIMES   = "times"; | const std::string PatternFormatter::PROP_TIMES   = "times"; | ||||||
| const std::string PatternFormatter::PROP_PRIORITY_NAMES = "priorityNames"; | const std::string PatternFormatter::PROP_PRIORITY_NAMES = "priorityNames"; | ||||||
|  | const std::string PatternFormatter::DEFAULT_PRIORITY_NAMES = "Fatal,Critical,Error,Warning,Notice,Information,Debug,Trace"; | ||||||
|  |  | ||||||
| PatternFormatter::PatternFormatter(): | PatternFormatter::PatternFormatter(): | ||||||
| 	_localTime(false) | 	_localTime(false), | ||||||
|  | 	_priorityNames(DEFAULT_PRIORITY_NAMES) | ||||||
| { | { | ||||||
| 	parsePriorityNames(); | 	parsePriorityNames(); | ||||||
| } | } | ||||||
| @@ -42,7 +43,8 @@ PatternFormatter::PatternFormatter(): | |||||||
|  |  | ||||||
| PatternFormatter::PatternFormatter(const std::string& format): | PatternFormatter::PatternFormatter(const std::string& format): | ||||||
| 	_localTime(false), | 	_localTime(false), | ||||||
| 	_pattern(format) | 	_pattern(format), | ||||||
|  | 	_priorityNames(DEFAULT_PRIORITY_NAMES) | ||||||
| { | { | ||||||
| 	parsePriorityNames(); | 	parsePriorityNames(); | ||||||
| 	parsePattern(); | 	parsePattern(); | ||||||
| @@ -230,30 +232,7 @@ std::string PatternFormatter::getProperty(const std::string& name) const | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| namespace |  | ||||||
| { |  | ||||||
| 	static std::string priorities[] =  |  | ||||||
| 	{ |  | ||||||
| 		"", |  | ||||||
| 		"Fatal", |  | ||||||
| 		"Critical", |  | ||||||
| 		"Error", |  | ||||||
| 		"Warning", |  | ||||||
| 		"Notice", |  | ||||||
| 		"Information", |  | ||||||
| 		"Debug", |  | ||||||
| 		"Trace" |  | ||||||
| 	}; |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void PatternFormatter::parsePriorityNames() | void PatternFormatter::parsePriorityNames() | ||||||
| { |  | ||||||
| 	for (int i = 0; i <= 8; i++) |  | ||||||
| 	{ |  | ||||||
| 		_priorities[i] = priorities[i]; |  | ||||||
| 	} |  | ||||||
| 	if (!_priorityNames.empty()) |  | ||||||
| { | { | ||||||
| 	StringTokenizer st(_priorityNames, ",;", StringTokenizer::TOK_TRIM); | 	StringTokenizer st(_priorityNames, ",;", StringTokenizer::TOK_TRIM); | ||||||
| 	if (st.count() == 8) | 	if (st.count() == 8) | ||||||
| @@ -265,13 +244,12 @@ void PatternFormatter::parsePriorityNames() | |||||||
| 	} | 	} | ||||||
| 	else throw Poco::SyntaxException("priorityNames property must specify a comma-separated list of 8 property names"); | 	else throw Poco::SyntaxException("priorityNames property must specify a comma-separated list of 8 property names"); | ||||||
| } | } | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| const std::string& PatternFormatter::getPriorityName(int prio) | const std::string& PatternFormatter::getPriorityName(int prio) | ||||||
| { | { | ||||||
| 	poco_assert (1 <= prio && prio <= 8);	 | 	poco_assert (1 <= prio && prio <= 8);	 | ||||||
| 	return priorities[prio]; | 	return _priorities[prio]; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -91,6 +91,17 @@ void PatternFormatterTest::testPatternFormatter() | |||||||
| 	fmt.setProperty("pattern", "start %v[8] end"); | 	fmt.setProperty("pattern", "start %v[8] end"); | ||||||
| 	fmt.format(msg, result); | 	fmt.format(msg, result); | ||||||
| 	assertTrue (result == "start stSource end"); | 	assertTrue (result == "start stSource end"); | ||||||
|  |  | ||||||
|  | 	result.clear(); | ||||||
|  | 	fmt.setProperty("pattern", "%O"); | ||||||
|  | 	fmt.format(msg, result); | ||||||
|  | 	assertTrue (result == "PatternFormatterTest.cpp"); | ||||||
|  |  | ||||||
|  | 	result.clear(); | ||||||
|  | 	fmt.setProperty("priorityNames", "FATAL,CRITICAL,SPECIAL_ERROR_NAME,WARN,NOTICE,INFO,DEBUG,TRACE"); | ||||||
|  | 	fmt.setProperty("pattern", "%p"); | ||||||
|  | 	fmt.format(msg, result); | ||||||
|  | 	assertTrue (result == "SPECIAL_ERROR_NAME"); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Günter Obiltschnig
					Günter Obiltschnig