apply plugin: 'com.android.application'
repositories {
mavenCentral()
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.nhncloud.android:nhncloud-unity-logger:1.7.0'
**DEPS**}
메뉴 | 목록 | 설정 | 권장 설정 |
---|---|---|---|
Edit > Project Settings > Player | Debugging and crash reporting | On .Net UnhandledException | Silent Exit |
Edit > Project Settings > Player | Debugging and crash reporting | Enable CrashReport API | Disabled |
Edit > Project Settings > Player | Other Settings | Script Call Optimization | Slow and Safe |
using Toast.Logger;
Log & Crash Search에서 발급 받은 AppKey를 ProjectKey로 설정합니다.
var loggerConfiguration = new ToastLoggerConfiguration
{
ProjectKey = "YOUR_PROJECT_KEY"
};
ToastLogger.Initialize(loggerConfiguration);
NHN Cloud Logger는 5가지 레벨의 로그를 전송할 수 있습니다. 사용자 필드를 추가해서 보낼 수도 있습니다.
// DEBUG 레벨 로그
ToastLogger.Debug(message);
ToastLogger.Debug(message, userFields);
// INFO 레벨 로그
ToastLogger.Info(message);
ToastLogger.Info(message, userFields);
// WARN 레벨 로그
ToastLogger.Warn(message);
ToastLogger.Warn(message, userFields);
// ERROR 레벨 로그
ToastLogger.Error(message);
ToastLogger.Error(message, userFields);
// FATAL 레벨 로그
ToastLogger.Fatal(message);
ToastLogger.Fatal(message, userFields);
ToastLogger.Debug("NHN Cloud Log & Crash Search!", new Dictionary<string, string>
{
{ "Scene", "Main" }
});
원하는 사용자 정의 필드를 설정합니다. 사용자 정의 필드를 설정하면 로그 전송 API를 호출할 때마다 설정한 값을 로그와 함께 서버로 전송합니다.
ToastLogger.SetUserField(userField, userValue);
ToastLogger.SetUserField("GameObject", gameObject.name);
public interface IToastLoggerListener
{
void OnSuccess(LogEntry log);
void OnFilter(LogEntry log, LogFilter filter);
void OnSave(LogEntry log);
void OnError(LogEntry log, string errorMessage);
}
static void SetLoggerListener(IToastLoggerListener listener);
public class SampleLoggerListener : IToastLoggerListener
{
public void OnSuccess(LogEntry log)
{
// 로그 전송 성공시 처리
}
public void OnFilter(LogEntry log, LogFilter filter)
{
// 로그 필터링시 처리
}
public void OnSave(LogEntry log)
{
// 네트워크 단절 등으로 인한 실패시 로그 재전송을 위해 파일에 저장되었을 경우
}
public void OnError(LogEntry log, string errorMessage)
{
// 로그 전송 실패시 처리
}
}
ToastLogger.SetLoggerListener(new SampleLoggerListener());
NHN Cloud Logger 에서는 유니티의 크래시를 크게 두 가지로 분류합니다.
왜 LogException으로 출력된 로그도 크래시 로그로 수집하나요? 써드파티 라이브러리 중에 LogException를 통해서 사용자 코드의 예외를 노출하는 경우가 더러 있기 때문입니다. 크래시 로그를 필터링 하고 싶다면 아래 크래시 로그 필터링하기 를 참고해주세요.
ToastLogger를 초기화하면 모바일 환경에서 크래시가 발생했을 경우, 혹은 유니티에서 예기치 못한 예외가 발생했을 경우, 자동으로 크래시 로그가 전송됩니다. 크래시 로그 전송을 비활성화하고 싶은 경우 아래와 같이 ToastLoggerConfiguration 객체의 EnableCrashReporter 프로퍼티를 false 로 설정하면 됩니다. 각 플랫폼별 크래시 로그에 대한 정보는 아래 링크를 확인하면 됩니다.
var loggerConfiguration = new ToastLoggerConfiguration
{
ProjectKey = "YOUR_PROJECT_KEY",
EnableCrashReporter = false // 크래시 로그 비활성화
};
User ID가 설정되어 있으면 Log&Crash Search 콘솔의
크래시 사용자
항목에서 사용자별 크래시 경험을 확인 할 수 있습니다. User ID 설정은 시작하기에서 확인 가능합니다.
유니티에서 예기치 못한 예외가 발생했을 경우에만 동작합니다. 네이티브 플랫폼에서 발생한 크래시에 대한 리스너는 제공하지 않습니다.
public delegate void CrashListener(bool isSuccess, LogEntry logEntry);
public static void SetCrashListener(CrashListener listener);
ToastLogger.SetCrashListener((isSuccess, log) =>
{
if (isSuccess)
{
Application.Quit();
}
});
public delegate bool CrashFilter(CrashLogData logData);
public class CrashLogData
{
public LogType LogType { get; }
public string Condition { get; }
public string StackTrace { get; }
}
public static void AddCrashFilter(CrashFilter filter);
ToastLogger.AddCrashFilter(crashLogData => crashLogData.Condition.Contains("UnityEngine.Debug.Log"));
NHN Cloud Logger는 일반/크래시 로그 뿐만 아니라, try/catch 구문에서 예외와 관련된 내용을 Report API를 사용하여 전송할 수 있습니다. 이렇게 전송한 예외 로그는 "Log & Crash Search 콘솔" > "App Crash Search 탭"의 오류 유형에서 "Handled"로 필터링하여 조회할 수 있습니다. 자세한 Log & Crash 콘솔 사용 방법은 콘솔 사용 가이드를 참고하세요.
// Handled Exception 로그 전송
var logLevel = ToastLogLevel.ERROR;
ToastLogger.Report(logLevel, message, exception);
try
{
doSomethingWrong();
}catch(Exception e)
{
// Debug, Info, Warn, Error, Fatal 등을 사용할 수 있습니다.
ToastLogger.Report(ToastLogLevel.ERROR, "YOUR_MESSAGE", exception);
}
Network Insights는 콘솔에 등록한 URL을 호출하여 지연시간 및 응답 값을 측정합니다. 이를 활용하여 세계 여러 나라(디바이스의 국가 코드 기준)에서의 지연시간과 응답 값을 측정할 수 있습니다.
콘솔을 통해 Network Insights 기능을 활성화하면 NHN Cloud Logger 초기화 시에, 콘솔에 등록한 URL로 1회 요청합니다.