source: tags/casa3.2.0asap/src/AsapLogSink.cpp@ 2747

Last change on this file since 2747 was 1859, checked in by Malte Marquarding, 14 years ago

Ticket #193: the rcParamsverbose flag is only used in standard asap cli mode. Otherwise log messages are always send to the logger and one needs to call asaplog.disable()/asaplog.enable() to controls this. I have also added the function name as the log origin.

File size: 1.3 KB
Line 
1//
2// C++ Implementation: AsapLogSink
3//
4// Description:
5//
6//
7// Author: Malte Marquarding <asap@atnf.csiro.au>, (C) 2010
8//
9// Copyright: See COPYING file that comes with this distribution
10//
11//
12#include <casa/iostream.h>
13#include <casa/Logging/LogMessage.h>
14#include <casa/Logging/LogSink.h>
15#include <casa/Logging/NullLogSink.h>
16#include "AsapLogSink.h"
17
18using namespace casa;
19
20namespace asap {
21
22 void AsapLogSink::postMessage(const std::string& msg,
23 const std::string& priority,
24 const std::string& origin)
25 {
26 LogMessage::Priority p;
27 if (priority == "INFO") {
28 p = LogMessage::NORMAL;
29 } else if (priority == "WARN") {
30 p = LogMessage::WARN;
31 } else if (priority == "ERROR") {
32 p = LogMessage::SEVERE;
33 }
34 LogMessage message(msg, LogOrigin(origin), p);
35
36 MemoryLogSink::postLocally(message);
37 }
38
39 std::string AsapLogSink::popMessages()
40 {
41 ostringstream oss;
42 for (uInt i=0; i < nelements(); ++i) {
43 std::string p = getPriority(i);
44 if (p != "INFO") {
45 oss << p << ": ";
46 }
47 oss << getMessage(i) << endl;
48 }
49 clearLocally();
50 return String(oss);
51 }
52
53 void setAsapSink(AsapLogSink& sink)
54 {
55 LogSinkInterface* s = &sink;
56 LogSink().globalSink(s);
57 }
58
59};
Note: See TracBrowser for help on using the repository browser.