14
14
// limitations under the License.
15
15
// </copyright>
16
16
17
+ using System ;
18
+
17
19
namespace Google {
18
20
19
21
/// <summary>
20
22
/// Log severity.
21
23
/// </summary>
22
- internal enum LogLevel {
24
+ public enum LogLevel {
23
25
Debug ,
24
26
Verbose ,
25
27
Info ,
26
28
Warning ,
27
29
Error ,
28
30
} ;
29
31
32
+ /// <summary>
33
+ /// Where to log.
34
+ /// </summary>
35
+ [ Flags ]
36
+ public enum LogTarget {
37
+ Console = 1 ,
38
+ Unity = 2 ,
39
+ File = 4 ,
40
+ } ;
41
+
30
42
/// <summary>
31
43
/// Writes filtered logs to the Unity log.
32
44
/// </summary>
33
- internal class Logger {
45
+ public class Logger {
34
46
35
47
/// <summary>
36
48
/// Filter the log level.
37
49
/// </summary>
38
- internal LogLevel Level { get ; set ; }
50
+ public LogLevel Level { get ; set ; }
51
+
52
+ /// <summary>
53
+ /// Filter the log targets.
54
+ /// </summary>
55
+ public LogTarget Target { get ; set ; }
39
56
40
57
/// <summary>
41
58
/// Enable / disable verbose logging.
42
59
/// This toggles between Info vs. Verbose levels.
43
60
/// </summary>
44
- internal bool Verbose {
61
+ public bool Verbose {
45
62
set { Level = value ? LogLevel . Verbose : LogLevel . Info ; }
46
63
get { return Level <= LogLevel . Verbose ; }
47
64
}
48
65
49
66
/// <summary>
50
67
/// Name of the file to log to, if this is null this will not log to a file.
51
68
/// </summary>
52
- internal string LogFilename { get ; set ; }
69
+ public string LogFilename { get ; set ; }
53
70
54
71
/// <summary>
55
72
/// Delegate function used to log messages.
56
73
/// </summary>
57
74
/// <param name="message">Message to log.</param>
58
75
/// <param name="level">Log level of the message.</param>
59
- internal delegate void LogMessageDelegate ( string message , LogLevel level ) ;
76
+ public delegate void LogMessageDelegate ( string message , LogLevel level ) ;
60
77
61
78
/// <summary>
62
79
/// Event that is called for each logged message.
63
80
/// </summary>
64
- internal event LogMessageDelegate LogMessage ;
81
+ public event LogMessageDelegate LogMessage ;
65
82
66
83
/// <summary>
67
84
/// Construct a logger.
68
85
/// </summary>
69
- internal Logger ( ) { }
86
+ public Logger ( ) {
87
+ Level = LogLevel . Info ;
88
+ Target = LogTarget . Unity | LogTarget . File ;
89
+ }
70
90
71
91
/// <summary>
72
92
/// Write a message to the log file.
@@ -86,22 +106,29 @@ private void LogToFile(string message) {
86
106
/// <param name="message">String to write to the log.</param>
87
107
/// <param name="level">Severity of the message, if this is below the currently selected
88
108
/// Level property the message will not be logged.</param>
89
- internal virtual void Log ( string message , LogLevel level = LogLevel . Info ) {
109
+ public virtual void Log ( string message , LogLevel level = LogLevel . Info ) {
90
110
if ( level >= Level || ExecutionEnvironment . InBatchMode ) {
91
111
switch ( level ) {
92
112
case LogLevel . Debug :
93
113
case LogLevel . Verbose :
94
114
case LogLevel . Info :
95
- UnityEngine . Debug . Log ( message ) ;
96
- LogToFile ( message ) ;
115
+ if ( ( Target & LogTarget . Unity ) != 0 ) UnityEngine . Debug . Log ( message ) ;
116
+ if ( ( Target & LogTarget . File ) != 0 ) LogToFile ( message ) ;
117
+ if ( ( Target & LogTarget . Console ) != 0 ) System . Console . WriteLine ( message ) ;
97
118
break ;
98
119
case LogLevel . Warning :
99
- UnityEngine . Debug . LogWarning ( message ) ;
100
- LogToFile ( "WARNING: " + message ) ;
120
+ if ( ( Target & LogTarget . Unity ) != 0 ) UnityEngine . Debug . LogWarning ( message ) ;
121
+ if ( ( Target & LogTarget . File ) != 0 ) LogToFile ( "WARNING: " + message ) ;
122
+ if ( ( Target & LogTarget . Console ) != 0 ) {
123
+ System . Console . WriteLine ( "WARNING: " + message ) ;
124
+ }
101
125
break ;
102
126
case LogLevel . Error :
103
- UnityEngine . Debug . LogError ( message ) ;
104
- LogToFile ( "ERROR: " + message ) ;
127
+ if ( ( Target & LogTarget . Unity ) != 0 ) UnityEngine . Debug . LogError ( message ) ;
128
+ if ( ( Target & LogTarget . File ) != 0 ) LogToFile ( "ERROR: " + message ) ;
129
+ if ( ( Target & LogTarget . Console ) != 0 ) {
130
+ System . Console . WriteLine ( "ERROR: " + message ) ;
131
+ }
105
132
break ;
106
133
}
107
134
}
0 commit comments