.NET Core/C# - 리눅스 syslog에 로그 남기는 방법
지난 글에서 syslog 관련 사용법을 간단하게 살펴봤는데요.
Linux에서 윈도우의 OutputDebugString 대신 사용할 수 있는 syslog
; https://www.sysnet.pe.kr/2/0/11899
.NET Core의 경우 일단 BCL 수준에서 syslog에 로그를 남기는 방법은 없는 것 같습니다. 물론, PInvoke를 이용해 libc.so의 함수를 다음과 같이 간단하게 만들어 사용하면 됩니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
public class LinuxExtension
{
[DllImport("libc", CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)]
protected static extern void syslog(int priority, string fmt, byte[] msg);
public enum SyslogPriority
{
LOG_EMERG = 0,
LOG_ALERT = 1,
LOG_CRIT = 2,
LOG_ERR = 3,
LOG_WARNING = 4,
LOG_NOTICE = 5,
LOG_INFO = 6,
LOG_DEBUG = 7,
}
public static void WriteSyslog(SyslogPriority priority, string text)
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) == true)
{
syslog((int)priority, text, null);
}
}
}
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]