アプリケーションでsyslog.h
を使用してシステムロガーを作成したいだけです。私はそのライブラリを使用して作成を開始する方法を知らないし、このリンクhttps://github.com/asankah/syslog-win32のsyslogをダウンロードしましたが、どのように動作するのかわかりません。私はsyslogの使い方に関する関連トピックを検索しましたが、Linux OSに関する多くの話題を見ましたが、試してみましたが動作しません。 Windows OSでこのsyslogを作成し、自分が開発したアプリケーションに適用することを目標にしていました。QtでSyslog-Win32ライブラリを使用するには?
私はこの構文を使用する場合:
#include "mainwindow.h"
#include <QApplication>
#include <syslog.h>
#include<stdio.h>
#include<stdlib.h>
#include<stdarg.h>
#include <QString>
#include <QByteArray>
#include<QtCore/QtGlobal>
#include <QFile>
#include <QTextStream>
#pragma comment(lib,"Ws2_32.lib")
void SyslogMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
QByteArray localMsg = msg.toLocal8Bit();
QString Stype;
char fmt[] = {"Debug: %s", "Info: %s", "Warning: %s", "Critical: %s", "Fatal %s"};
switch (type) {
case QtDebugMsg:
syslog(LOG_DEBUG, fmt[0], localMsg.constData());
break;
case QtInfoMsg:
syslog(LOG_INFO, fmt[1], localMsg.constData());
break;
case QtWarningMsg:
syslog(LOG_WARNING, fmt[2], localMsg.constData());
break;
case QtCriticalMsg:
syslog(LOG_CRIT, fmt[3], localMsg.constData());
break;
case QtFatalMsg:
syslog(LOG_ALERT, fmt[4], localMsg.constData());
abort();
break;
}
QFile outFile("Log.txt");
outFile.open(QIODevice::WriteOnly | QIODevice::Append /*|QIODevice::Truncate*/);
QTextStream ts(&outFile);
QString log = QString("%1: %2 \n").arg(Stype).arg(msg).arg(context.file).arg(context.line).arg(context.function);
QByteArray logMsg = log.toLocal8Bit();
ts << logMsg << endl;
outFile.close();
}
int main(int argc, char *argv[])
{
init_syslog("localhost");
qInstallMessageHandler(SyslogMessageHandler);
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
次のエラーが発生します。
void syslog(int,char *,...)': cannot convert argument 2 from const char [7]' to 'char *
エラー:LNK2019:未解決の外部シンボル機能メイン
で参照init_syslog私にはわからないが何が問題なの?
なぜあなたはそれを自分でしたいですか? Qtにはすでにニーズに応じてカスタマイズできるロギング機能があります。これはあなたを助けるかもしれません:https://stackoverflow.com/questions/4954140/how-to-redirect-qdebug-qwarning-qcritical-etc-output – Azeem
私の投稿を更新しました。私は他のQtの施設よりもはるかに高速であるかどうかをテストするために、そのライブラリを使う方法を知る必要があります。私が開発したアプリケーションでは、他のqtロギング機能を使用するとデバッグプロセスが遅くなるためです。 –
あなたが使っている「施設」についてもう少し具体的に話すことはできますか?そして、あなたはどのような遅さに直面していますか?あなたのコードも投稿してください。 – Azeem