내 응용 프로그램에서 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