using System;
using System.Text;
using UnityEngine;
namespace Assets.Sources.Core.Log
{
public abstract class LogStrategy
{
private readonly StringBuilder _messageBuilder=new StringBuilder();
protected IContentWriter Writer { get; set; }
///
/// 模板方法
///
protected abstract void RecordMessage(string message);
protected abstract void SetContentWriter();
///
/// 公共的API
///
public void Log(string message,bool verbose=false)
{
if (verbose)
{
//公共方法
RecordDateTime();
RecordDeviceModel();
RecordDeviceName();
RecordOperatingSystem();
}
//抽象方法,交由子类实现
RecordMessage(_messageBuilder.AppendLine(string.Format("Message:{0}", message)).ToString());
}
private void RecordDateTime()
{
_messageBuilder.AppendLine(string.Format("DateTime:{0}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
}
private void RecordDeviceModel()
{
_messageBuilder.AppendLine(string.Format("Device Model:{0}",SystemInfo.deviceModel));
}
private void RecordDeviceName()
{
_messageBuilder.AppendLine(string.Format("Device Name:{0}", SystemInfo.deviceName));
}
private void RecordOperatingSystem()
{
_messageBuilder
.AppendLine(string.Format("Operating System:{0}", SystemInfo.operatingSystem))
.AppendLine();
}
}
}