Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ConsoleOutputMirror.cs
Go to the documentation of this file.
1
using
System
;
2
using
System.IO
;
3
using
System.Text
;
4
5
namespace
ReLogic.IO
;
6
7
public
class
ConsoleOutputMirror
:
IDisposable
8
{
9
private
class
DoubleWriter
:
TextWriter
10
{
11
private
readonly
TextWriter
_first
;
12
13
private
readonly
TextWriter
_second
;
14
15
public
override
Encoding
Encoding
=>
_first
.
Encoding
;
16
17
public
DoubleWriter
(
TextWriter
first,
TextWriter
second)
18
{
19
_first
= first;
20
_second
= second;
21
}
22
23
public
override
void
Flush
()
24
{
25
_first
.
Flush
();
26
_second
.
Flush
();
27
}
28
29
public
override
void
Write
(
char
value
)
30
{
31
_first
.
Write
(
value
);
32
_second
.
Write
(
value
);
33
}
34
}
35
36
private
static
ConsoleOutputMirror
_instance
;
37
38
private
FileStream
_fileStream
;
39
40
private
StreamWriter
_fileWriter
;
41
42
private
TextWriter
_newConsoleOutput
;
43
44
private
readonly
TextWriter
_oldConsoleOutput
;
45
46
private
bool
_disposedValue
;
47
48
public
static
void
ToFile
(
string
path)
49
{
50
if
(
_instance
!=
null
)
51
{
52
_instance
.Dispose();
53
_instance
=
null
;
54
}
55
try
56
{
57
_instance
=
new
ConsoleOutputMirror
(path);
58
}
59
catch
(
Exception
arg)
60
{
61
Console
.
WriteLine
(
"Unable to bind console output to file: {0}\r\nException: {1}"
, path, arg);
62
}
63
}
64
65
private
ConsoleOutputMirror
(
string
path)
66
{
67
_oldConsoleOutput
=
Console
.
Out
;
68
Directory
.
CreateDirectory
(
Directory
.
GetParent
(path).FullName);
69
_fileStream
=
File
.
Create
(path);
70
_fileWriter
=
new
StreamWriter
(
_fileStream
)
71
{
72
AutoFlush =
true
73
};
74
_newConsoleOutput
=
new
DoubleWriter
(
_fileWriter
,
_oldConsoleOutput
);
75
Console
.
SetOut
(
_newConsoleOutput
);
76
}
77
78
protected
virtual
void
Dispose
(
bool
disposing)
79
{
80
if
(
_disposedValue
)
81
{
82
return
;
83
}
84
if
(disposing)
85
{
86
Console
.
SetOut
(
_oldConsoleOutput
);
87
if
(
_fileWriter
!=
null
)
88
{
89
_fileWriter
.
Flush
();
90
_fileWriter
.
Close
();
91
_fileWriter
=
null
;
92
}
93
if
(
_fileStream
!=
null
)
94
{
95
_fileStream
.
Close
();
96
_fileStream
=
null
;
97
}
98
}
99
_disposedValue
=
true
;
100
}
101
102
public
void
Dispose
()
103
{
104
Dispose
(disposing:
true
);
105
}
106
}
ReLogic.IO.ConsoleOutputMirror.DoubleWriter._second
readonly TextWriter _second
Definition
ConsoleOutputMirror.cs:13
ReLogic.IO.ConsoleOutputMirror.DoubleWriter._first
readonly TextWriter _first
Definition
ConsoleOutputMirror.cs:11
ReLogic.IO.ConsoleOutputMirror.DoubleWriter.Flush
override void Flush()
Definition
ConsoleOutputMirror.cs:23
ReLogic.IO.ConsoleOutputMirror.DoubleWriter.Write
override void Write(char value)
Definition
ConsoleOutputMirror.cs:29
ReLogic.IO.ConsoleOutputMirror.DoubleWriter.DoubleWriter
DoubleWriter(TextWriter first, TextWriter second)
Definition
ConsoleOutputMirror.cs:17
ReLogic.IO.ConsoleOutputMirror.DoubleWriter
Definition
ConsoleOutputMirror.cs:10
ReLogic.IO.ConsoleOutputMirror.ToFile
static void ToFile(string path)
Definition
ConsoleOutputMirror.cs:48
ReLogic.IO.ConsoleOutputMirror.Dispose
void Dispose()
Definition
ConsoleOutputMirror.cs:102
ReLogic.IO.ConsoleOutputMirror.Dispose
virtual void Dispose(bool disposing)
Definition
ConsoleOutputMirror.cs:78
ReLogic.IO.ConsoleOutputMirror._fileWriter
StreamWriter _fileWriter
Definition
ConsoleOutputMirror.cs:40
ReLogic.IO.ConsoleOutputMirror._newConsoleOutput
TextWriter _newConsoleOutput
Definition
ConsoleOutputMirror.cs:42
ReLogic.IO.ConsoleOutputMirror._oldConsoleOutput
readonly TextWriter _oldConsoleOutput
Definition
ConsoleOutputMirror.cs:44
ReLogic.IO.ConsoleOutputMirror._instance
static ConsoleOutputMirror _instance
Definition
ConsoleOutputMirror.cs:36
ReLogic.IO.ConsoleOutputMirror.ConsoleOutputMirror
ConsoleOutputMirror(string path)
Definition
ConsoleOutputMirror.cs:65
ReLogic.IO.ConsoleOutputMirror._disposedValue
bool _disposedValue
Definition
ConsoleOutputMirror.cs:46
ReLogic.IO.ConsoleOutputMirror._fileStream
FileStream _fileStream
Definition
ConsoleOutputMirror.cs:38
ReLogic.IO.ConsoleOutputMirror
Definition
ConsoleOutputMirror.cs:8
System.Console.WriteLine
static void WriteLine()
Definition
Console.cs:733
System.Console.Out
static TextWriter Out
Definition
Console.cs:153
System.Console.SetOut
static void SetOut(TextWriter newOut)
Definition
Console.cs:686
System.Console
Definition
Console.cs:11
System.Exception
Definition
Exception.cs:15
System.IO.Directory.CreateDirectory
static DirectoryInfo CreateDirectory(string path)
Definition
Directory.cs:28
System.IO.Directory.GetParent
static ? DirectoryInfo GetParent(string path)
Definition
Directory.cs:9
System.IO.Directory
Definition
Directory.cs:8
System.IO.FileStream
Definition
FileStream.cs:11
System.IO.File.Create
static FileStream Create(string path)
Definition
File.cs:73
System.IO.File
Definition
File.cs:15
System.IO.StreamWriter.Flush
override void Flush()
Definition
StreamWriter.cs:267
System.IO.StreamWriter.Close
override void Close()
Definition
StreamWriter.cs:199
System.IO.StreamWriter
Definition
StreamWriter.cs:11
System.IO.Stream.Close
virtual void Close()
Definition
Stream.cs:644
System.IO.TextWriter.Encoding
Encoding Encoding
Definition
TextWriter.cs:462
System.IO.TextWriter.Write
virtual void Write(char value)
Definition
TextWriter.cs:524
System.IO.TextWriter.Flush
virtual void Flush()
Definition
TextWriter.cs:520
System.IO.TextWriter
Definition
TextWriter.cs:13
System.Text.Encoding
Definition
Encoding.cs:15
System.IDisposable
Definition
IDisposable.cs:4
ReLogic.IO
Definition
ConsoleOutputMirror.cs:5
System.IO
Definition
ConsoleStream.cs:3
System.Text
Definition
ConsoleEncoding.cs:1
System.ExceptionArgument.value
@ value
System
Definition
BlockingCollection.cs:8
source
ReLogic
ReLogic.IO
ConsoleOutputMirror.cs
Generated by
1.10.0