Skip to content

Commit 4c2ed96

Browse files
authored
Merge pull request #172 from apache/Feature/170-ColoredConsoleAppender
#168 wrap encoding in ColoredConsoleAppender for skipping preamble
2 parents d176ed1 + 62aa1e8 commit 4c2ed96

File tree

20 files changed

+999
-739
lines changed

20 files changed

+999
-739
lines changed
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
using log4net.Appender;
22
using log4net.Core;
3-
using log4net.Layout;
43

54
namespace log4net_611_lib;
65

7-
public class DerivedAppender: RollingFileAppender
6+
public class DerivedAppender : RollingFileAppender
87
{
9-
protected override void Append(LoggingEvent loggingEvent)
10-
{
11-
loggingEvent.Properties["appender-class-name"] = nameof(DerivedAppender);
12-
base.Append(loggingEvent);
13-
}
8+
protected override void Append(LoggingEvent loggingEvent)
9+
{
10+
loggingEvent.Properties["appender-class-name"] = nameof(DerivedAppender);
11+
base.Append(loggingEvent);
12+
}
1413
}
Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,48 @@
11
using System.Reflection;
22
using log4net;
33
using log4net.Config;
4-
using log4net_611_lib;
54

65
var appPath = new Uri(Assembly.GetExecutingAssembly().Location).LocalPath;
76
var appFolder = Path.GetDirectoryName(appPath);
87
// force loading the assembly, otherwise the appender type isn't found later
98
Assembly.LoadFile("log4net-611-lib.dll");
109
if (appFolder is null)
1110
{
12-
throw new InvalidOperationException("Can't find myself");
11+
throw new InvalidOperationException("Can't find myself");
1312
}
1413

1514
Assembly.LoadFile(Path.Combine(appFolder, "log4net-611-lib.dll"));
1615

1716
var configFile = Path.Combine(appFolder, "log4net.config");
1817
if (!File.Exists(configFile))
1918
{
20-
throw new InvalidOperationException($"log4net.config not found at {configFile}");
19+
throw new InvalidOperationException($"log4net.config not found at {configFile}");
2120
}
2221

2322
if (Directory.Exists("Logs"))
2423
{
25-
Console.WriteLine("Clearing out old logs...");
26-
foreach (var file in Directory.EnumerateFiles("Logs"))
27-
{
28-
File.Delete(file);
29-
}
24+
Console.WriteLine("Clearing out old logs...");
25+
foreach (var file in Directory.EnumerateFiles("Logs"))
26+
{
27+
File.Delete(file);
28+
}
3029
}
3130

3231
var info = new FileInfo(configFile);
3332
var logRepo = LogManager.GetRepository(Assembly.GetExecutingAssembly());
34-
XmlConfigurator.ConfigureAndWatch(
35-
logRepo,
36-
info
37-
);
33+
XmlConfigurator.ConfigureAndWatch(logRepo, info);
3834

3935
var logger = LogManager.GetLogger(typeof(Program));
4036

4137
Console.WriteLine("logging...");
4238
for (var i = 0; i < 10; i++)
4339
{
44-
logger.Info($"test log {i}");
40+
logger.Info($"test log {i}");
4541
}
4642

4743

4844
foreach (var file in Directory.EnumerateFiles("Logs"))
4945
{
50-
Console.WriteLine($"log file: {file}");
51-
Console.WriteLine(File.ReadAllText(file));
46+
Console.WriteLine($"log file: {file}");
47+
Console.WriteLine(File.ReadAllText(file));
5248
}

src/integration-testing/log4net-672/Program.cs

Lines changed: 31 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -14,78 +14,76 @@
1414
var appFolder = Path.GetDirectoryName(appPath);
1515
if (appFolder is null)
1616
{
17-
throw new InvalidOperationException(
18-
$"Can't determine app folder for {appPath}"
19-
);
17+
throw new InvalidOperationException($"Can't determine app folder for {appPath}");
2018
}
2119

2220
var logFolder = Path.Combine(appFolder, "Logs");
2321
if (Directory.Exists(logFolder))
2422
{
25-
Directory.Delete(logFolder, recursive: true);
23+
Directory.Delete(logFolder, recursive: true);
2624
}
2725

2826
var configFile = Path.Combine(appFolder, "log4net.config");
2927
if (!File.Exists(configFile))
3028
{
31-
throw new InvalidOperationException($"log4net.config not found at {configFile}");
29+
throw new InvalidOperationException($"log4net.config not found at {configFile}");
3230
}
3331

3432
var logCount = 10;
3533
var identifiers = new List<Guid>();
3634
for (var i = 0; i < 10; i++)
3735
{
38-
var identifier = Guid.NewGuid();
39-
identifiers.Add(identifier);
40-
var logged = LogWith(identifier, logCount);
41-
if (logged != logCount)
42-
{
43-
Die($"Missing logs immediately for '{identifier}' - found {logged}/{logCount}", MISSING_LOGS);
44-
}
36+
var identifier = Guid.NewGuid();
37+
identifiers.Add(identifier);
38+
var logged = LogWith(identifier, logCount);
39+
if (logged != logCount)
40+
{
41+
Die($"Missing logs immediately for '{identifier}' - found {logged}/{logCount}", MISSING_LOGS);
42+
}
4543
}
4644

4745
foreach (var identifier in identifiers)
4846
{
49-
var logged = CountIdentifierInLogs(identifier);
50-
if (logged != logCount)
51-
{
52-
Die($"Logs have been overwritten for '{identifier}' - found {logged}/{logCount}", OVERWRITTEN_LOGS);
53-
}
47+
var logged = CountIdentifierInLogs(identifier);
48+
if (logged != logCount)
49+
{
50+
Die($"Logs have been overwritten for '{identifier}' - found {logged}/{logCount}", OVERWRITTEN_LOGS);
51+
}
5452
}
5553

5654
Console.WriteLine("All good: LOG4NET-672 is resolved");
5755
return NO_ERROR;
5856

5957
void Die(string message, int exitCode)
6058
{
61-
Console.Error.WriteLine(message);
62-
Environment.Exit(exitCode);
59+
Console.Error.WriteLine(message);
60+
Environment.Exit(exitCode);
6361
}
6462

6563
int CountIdentifierInLogs(Guid id)
6664
{
67-
return Directory.EnumerateFiles("Logs").Select(
68-
filePath => CountIdentifierInFile(id, filePath)
69-
).Sum();
65+
return Directory.EnumerateFiles("Logs").Select(
66+
filePath => CountIdentifierInFile(id, filePath)
67+
).Sum();
7068
}
7169

7270
int CountIdentifierInFile(Guid id, string filePath)
7371
{
74-
var contents = File.ReadAllLines(filePath);
75-
return contents.Count(line => line.Contains(id.ToString()));
72+
var contents = File.ReadAllLines(filePath);
73+
return contents.Count(line => line.Contains(id.ToString()));
7674
}
7775

7876
int LogWith(Guid identifier, int howManyLogs)
7977
{
80-
var info = new FileInfo(configFile);
81-
XmlConfigurator.Configure(info);
82-
var logger = LogManager.GetLogger("main");
78+
var info = new FileInfo(configFile);
79+
XmlConfigurator.Configure(info);
80+
var logger = LogManager.GetLogger("main");
8381

84-
for (var i = 0; i < howManyLogs; i++)
85-
{
86-
logger.Info($"test log {i} [{identifier}]");
87-
}
82+
for (var i = 0; i < howManyLogs; i++)
83+
{
84+
logger.Info($"test log {i} [{identifier}]");
85+
}
8886

89-
LogManager.Flush(int.MaxValue);
90-
return CountIdentifierInLogs(identifier);
87+
LogManager.Flush(int.MaxValue);
88+
return CountIdentifierInLogs(identifier);
9189
}

src/integration-testing/log4net-673/Program.cs

Lines changed: 30 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -10,68 +10,65 @@
1010
// force loading the assembly, otherwise the appender type isn't found later
1111
if (appFolder is null)
1212
{
13-
throw new InvalidOperationException("Can't find myself");
13+
throw new InvalidOperationException("Can't find myself");
1414
}
1515

1616
var configFile = Path.Combine(appFolder, "log4net.config");
1717
if (!File.Exists(configFile))
1818
{
19-
throw new InvalidOperationException($"log4net.config not found at {configFile}");
19+
throw new InvalidOperationException($"log4net.config not found at {configFile}");
2020
}
2121

2222
if (Directory.Exists("log"))
2323
{
24-
Console.WriteLine("Clearing out old logs...");
25-
foreach (var file in Directory.EnumerateFiles("log"))
26-
{
27-
File.Delete(file);
28-
}
24+
Console.WriteLine("Clearing out old logs...");
25+
foreach (var file in Directory.EnumerateFiles("log"))
26+
{
27+
File.Delete(file);
28+
}
2929
}
3030

3131
var info = new FileInfo(configFile);
3232
var logRepo = LogManager.GetRepository(Assembly.GetExecutingAssembly());
33-
XmlConfigurator.ConfigureAndWatch(
34-
logRepo,
35-
info
36-
);
33+
XmlConfigurator.ConfigureAndWatch(logRepo, info);
3734

3835
var logger = LogManager.GetLogger(typeof(Program));
3936

4037
Console.WriteLine("logging...");
4138
for (var i = 0; i < 10; i++)
4239
{
43-
logger.Info($"test log {i}");
44-
logger.Error($"error log {i}");
45-
logger.Warn($"warning log {i}");
40+
logger.Info($"test log {i}");
41+
logger.Error($"error log {i}");
42+
logger.Warn($"warning log {i}");
4643
}
4744

4845

4946
foreach (var file in Directory.EnumerateFiles("log"))
5047
{
51-
Console.WriteLine($"log file: {file}");
52-
TryDumpFile(file);
48+
Console.WriteLine($"log file: {file}");
49+
TryDumpFile(file);
5350
}
5451

55-
void TryDumpFile(string at)
52+
static void TryDumpFile(string at)
5653
{
57-
if (!File.Exists(at))
54+
if (!File.Exists(at))
55+
{
56+
Console.WriteLine($"File not found: {at}");
57+
return;
58+
}
59+
60+
for (var i = 0; i < 10; i++)
61+
{
62+
try
5863
{
59-
Console.WriteLine($"File not found: {at}");
60-
return;
64+
Console.WriteLine(File.ReadAllText(at));
65+
return;
6166
}
62-
63-
for (var i = 0; i < 10; i++)
67+
catch
6468
{
65-
try
66-
{
67-
Console.WriteLine(File.ReadAllText(at));
68-
return;
69-
}
70-
catch
71-
{
72-
Thread.Sleep(100);
73-
}
69+
Thread.Sleep(100);
7470
}
71+
}
7572

76-
Console.WriteLine($"Unable to read file at {at}");
77-
}
73+
Console.WriteLine($"Unable to read file at {at}");
74+
}

src/integration-testing/log4net-681/Program.cs

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,56 +7,53 @@
77

88
if (appFolder is null)
99
{
10-
throw new InvalidOperationException("Can't find myself");
10+
throw new InvalidOperationException("Can't find myself");
1111
}
1212

1313
var configFile = Path.Combine(appFolder, "log4net.config");
1414
if (!File.Exists(configFile))
1515
{
16-
throw new InvalidOperationException($"log4net.config not found at {configFile}");
16+
throw new InvalidOperationException($"log4net.config not found at {configFile}");
1717
}
1818

1919
if (Directory.Exists("Logs"))
2020
{
21-
Console.WriteLine("Clearing out old logs...");
22-
foreach (var file in Directory.EnumerateFiles("Logs"))
23-
{
24-
File.Delete(file);
25-
}
21+
Console.WriteLine("Clearing out old logs...");
22+
foreach (var file in Directory.EnumerateFiles("Logs"))
23+
{
24+
File.Delete(file);
25+
}
2626
}
2727

2828
var info = new FileInfo(configFile);
2929
var logRepo = LogManager.GetRepository(Assembly.GetExecutingAssembly());
30-
XmlConfigurator.ConfigureAndWatch(
31-
logRepo,
32-
info
33-
);
30+
XmlConfigurator.ConfigureAndWatch(logRepo, info);
3431

3532
var logger = LogManager.GetLogger(typeof(Program));
3633

3734
Console.WriteLine("logging...");
3835
var threads = new List<Thread>();
3936
for (var i = 0; i < 128; i++)
4037
{
41-
var thread = new Thread(LogABit);
42-
thread.Start();
43-
threads.Add(thread);
38+
var thread = new Thread(LogABit);
39+
thread.Start();
40+
threads.Add(thread);
4441
}
4542

4643
foreach (var t in threads)
4744
{
48-
t.Join();
45+
t.Join();
4946
}
5047

5148
foreach (var file in Directory.EnumerateFiles("Logs"))
5249
{
53-
Console.WriteLine($"found log file: {file}");
50+
Console.WriteLine($"found log file: {file}");
5451
}
5552

5653
void LogABit()
5754
{
58-
for (var i = 0; i < 100; i++)
59-
{
60-
logger.Info($"test log {i}");
61-
}
55+
for (var i = 0; i < 100; i++)
56+
{
57+
logger.Info($"test log {i}");
58+
}
6259
}

0 commit comments

Comments
 (0)