Логирование в Unity3D

Каким бы хорошим не был код, а логирование всё равно нужно.

Доказывать важность логирования событий при отладке программ не буду, т.к. любой, кто начинает разрабатывать ПО, быстро ощущает эту необходимость на практике. В Unity3D есть собственная система логирования в консоли — Debug.Log(). Но как только от разработки дело переходит к тестированию — консоль уже не помощник. Да и в процессе написания кода иногда требуется история логов.

Лично я пользуюсь простым, но вполне функциональным скриптом. Скрипт LogFile:

private FileInfo _file;
private string _name;
private string _filePath = "GameLog\\";

public LogFile (string _newName) {
	_name = _filePath + thisDate() + _newName + ".log";
	_file = new FileInfo(_name);
	if (!File.Exists(_name)) _file.Create();
}

public void AddInfo(string _data) {
	StreamWriter sw = new StreamWriter(File.Open(_name, FileMode.Append, FileAccess.Write));
	sw.WriteLine(_data);
	sw.Close();
}

public void AddTime(string _data) {
	StreamWriter sw = new StreamWriter(File.Open(_name, FileMode.Append, FileAccess.Write));
	sw.WriteLine(thisTime() + _data);
	sw.Close();
}

private string thisDate(){
	string temp = "";
	string _date = DateTime.Today.ToString();
	string[] temp2 = new string[3];
	temp2 = _date.Split(new Char [] {'/',' '});
	temp = temp2[2]+"_"+temp2[0]+"_"+temp2[1]+"-";
	return temp;
}

private string thisTime(){
	string temp = "";
	string _date = DateTime.Now.ToString();
	string[] temp2 = new string[3];
	temp2 = _date.Split(new Char [] {' '});
	temp = temp2[1] + " ";
	return temp;
}

Для использования нужно в рабочем скрипте объявить переменную для логирования и указать имя для файлов с логами

private LogFile _logs = new LogFile("Test");

Для записи в лог используются две команды AddInfo() и AddTime(). Первая записывает переданный текст, а вторая перед текстом ещё ставит время передачи текста. Файлы создаются с указанием даты, и для одного дня будет использован один и тот же лог-файл.
Скачать пример (355)

Логирование в Unity3D: 2 комментария

    1. admin

      Возможно, что AddInfo/AddTime используется только в событии клика мышки. Вставьте _logs.AddTime(«function1 start») в начале любой используемой вами функции и посмотрите, что будет в логах после запуска программы.

Добавить комментарий для Федір Отменить ответ

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>