Unity 간단 한 로그 출력 기능 구현
1.로그 기록 기 인터페이스
public interface ILogger
{
void Log(string condition, string stackTrace, UnityEngine.LogType type);
}
2.로그 파일 기록 기
using System;
using UnityEngine;
using System.IO;
public class FileLogger : ILogger
{
private readonly string path;
/// <summary>
///
/// </summary>
/// <param name="isClear"> </param>
public FileLogger(bool isClear = false)
{
switch (Application.platform)
{
case RuntimePlatform.Android:
path = Path.Combine( Application.persistentDataPath,"log.txt");
break;
case RuntimePlatform.WindowsPlayer:
path = Path.Combine(Application.dataPath, "log.txt");
break;
case RuntimePlatform.WindowsEditor:
path = Path.Combine(Application.dataPath, "log.txt");
break;
case RuntimePlatform.IPhonePlayer:
path = Path.Combine(Application.persistentDataPath, "log.txt");
break;
case RuntimePlatform.OSXEditor:
break;
default:
break;
}
if (isClear)
{
if (File.Exists(path))
{
File.Delete(path);
}
}
}
public void Log(string condition, string stackTrace, LogType type)
{
using (StreamWriter sw = new StreamWriter(path, true, System.Text.Encoding.UTF8))
{
string msg = string.Format("[{0}] {1}: {2}
{3}", GetNowTime(), type, condition, stackTrace);
sw.WriteLine(msg);
}
}
#region Tool Method
private string GetNowTime()
{
return DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
}
#endregion
}
3.로그 시스템 관리 클래스
using System;
using UnityEngine;
public class LogSys
{
private static ILogger logger;
public static ILogger Logger
{
get { return logger; }
}
public bool IsOpen
{
get { return Debug.unityLogger.logEnabled; }
}
private LogSys() { }
/// <summary>
///
/// </summary>
/// <param name="_logger"> </param>
/// <param name="isOpen"> </param>
public static void Init(ILogger _logger, bool isOpen = true)
{
Init(isOpen);
logger = _logger;
Enable();
}
public static void Init(bool isOpen = true)
{
Debug.unityLogger.logEnabled = isOpen;
}
/// <summary>
///
/// </summary>
/// <param name="logType"> </param>
public static void Filter(LogType logType = LogType.Log)
{
Debug.unityLogger.filterLogType = logType;
}
public static void Enable()
{
if (logger != null)
{
Application.logMessageReceived += logger.Log;
}
}
public static void Disable()
{
if (logger != null)
{
Application.logMessageReceived -= logger.Log;
}
}
}
4.테스트
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
public Text logText;
void Awake()
{
LogSys.Init(new FileLogger());
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Q))
{
Debug.Log("My name is Blinkedu.");
}
if (Input.GetKeyDown(KeyCode.W))
{
Debug.LogWarning("My name is Blinkedu.");
}
if (Input.GetKeyDown(KeyCode.E))
{
Debug.LogError("My name is Blinkedu.");
}
}
private void OnDestroy()
{
LogSys.Disable();
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
photonnetwork.instantiate에서 gamepobject 유형을 생성 한 다음 상태 및 값을 참조하는 방법주로 마지막 기사에서 일어난 일의 수정입니다. 지난번↓ 그럼 주제입니다. (타이틀이 정리되어 없어서 죄송합니다) 우선 전회의 Illegal view ID:0입니다만 photonnetwork.instantiate를 사...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.