forked from andre-pereira/MagPuzzle
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dbg.cs
126 lines (103 loc) · 3.5 KB
/
Dbg.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using UnityEngine;
public enum LogMessageType { DIALOG_ACT, PIECE_FOUND, PIECE_LOST, SPEECH_REC_FINAL, SPEECH_REC_HYPOTHESIS, PLAYER_GAZE_TARGET, ROBOT_GAZE_TARGET, SESSION_START, SESSION_END, TOBII,
PLAYER_POSITION, SETUP_AND_PROBLEMS
}
public class Dbg : MonoBehaviour {
private string LogFileExtension = ".tsv";
public bool EchoToConsole = true;
public bool AddTimeStamp = true;
private StreamWriter OutputStream;
static Dbg Singleton = null;
public static Dbg Instance
{
get { return Singleton; }
}
void Awake()
{
if (Singleton != null)
{
UnityEngine.Debug.LogError("Multiple Dbg Singletons exist!");
return;
}
Singleton = this;
}
public void CreateLoggingFile(string participantName, string sessionType)
{
if (OutputStream != null)
{
OutputStream.Close();
OutputStream = null;
}
// Open the log file to append the new log to it.
string LogPath = @"Logs\";
System.IO.Directory.CreateDirectory(LogPath);
var files = Directory.GetFiles(LogPath, "*" + LogFileExtension);
int LastSession = 0;
foreach (var item in files)
{
int currentSession = int.Parse(Path.GetFileName(item).Split('-')[0]);
LastSession = LastSession < currentSession ? currentSession : LastSession;
}
LastSession = LastSession + 1;
OutputStream = new StreamWriter(LogPath + LastSession + "-" + participantName + "_" + sessionType + LogFileExtension, true);
Log(LogMessageType.SESSION_START, new List<string> { Settings.Instance.ParticipantName.text, Settings.Condition.ToString()});
}
internal static void Log(LogMessageType logMessage, string content)
{
Log(logMessage.ToString() + "\t" + content);
}
internal static void Log(LogMessageType logMessage, List<string> contentList)
{
StringBuilder allContent = new StringBuilder();
for (int i = 0; i < contentList.Count - 1; i++)
{
allContent.Append(contentList[i]);
allContent.Append('\t');
}
allContent.Append(contentList[contentList.Count - 1]);
Log(logMessage, allContent.ToString());
}
void OnDestory()
{
Close();
}
public void Close()
{
Log(LogMessageType.SESSION_END, new List<string> { Settings.Instance.ParticipantName.text, Settings.Condition.ToString()});
if (OutputStream != null)
{
OutputStream.Close();
OutputStream = null;
}
}
private void TimeStampMessage(string message)
{
}
private void Write(string message)
{
if (OutputStream != null)
{
OutputStream.WriteLine(message);
OutputStream.Flush();
}
if (EchoToConsole)
{
UnityEngine.Debug.Log(message);
}
}
public static void Log(string message)
{
//message = string.Format("[{0:H:mm:ss}]\t {1}", DateTime.Now, message);
message = string.Format("{0:H:mm:ss:ms}\t{1}\t{2}",DateTime.Now , DateTimeOffset.Now.ToUnixTimeMilliseconds(), message);
if (Dbg.Instance != null)
Dbg.Instance.Write(message);
else
// Fallback if the debugging system hasn't been initialized yet.
UnityEngine.Debug.Log(message);
}
}