デバック用Poco::Channel

svvitchでDebugビルドができるようになったー!
といっても、デバック用が無いライブラリをリリース用のに変えただけですが。
デバックって便利なんですよね、使いだすともうデバックモード無ではやってられないというか。javaの時はスタックトレースがあるからいいんですけどねぇ、なんかもう理不尽な落ちまくりのときには重宝します。

で、需要があるか微妙ですが、VisualStudioのデバックコンソールに出力するPoco::Logger用のPoco::Channelクラスです。Debugビルドの時だけLogger->setChannel()しています。Channelがチェーンできたらいいのにな、setChannel()じゃなくてaddChannel()とかねぇ。

まずヘッダファイル。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#pragma once
 
#include <Poco/Channel.h>
#include <Poco/Message.h>
 
class DebugConsoleChannel: public Poco::Channel {
private:
 
public:
    DebugConsoleChannel();
 
    void log(const Poco::Message& msg);
 
protected:
    ~DebugConsoleChannel();
};

こっちが実装ですね。UTF-8のまま出したら化けてたので、UTF-16で出すようにします。Poco便利ですね。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifdef _DEBUG
#include "DebugConsoleChannel.h"
#include <Poco/UnicodeConverter.h>
 
DebugConsoleChannel::DebugConsoleChannel() {
}
 
DebugConsoleChannel::~DebugConsoleChannel() {
}
 
void DebugConsoleChannel::log(const Poco::Message& msg) {
    std::wstring ws;
    Poco::UnicodeConverter::toUTF16(msg.getText(), ws);
    ws.append(L"n");
    ::OutputDebugStringW(ws.c_str());
}
#endif

コメント

タイトルとURLをコピーしました