-
Notifications
You must be signed in to change notification settings - Fork 57
/
Copy pathProgram.cs
65 lines (50 loc) · 1.42 KB
/
Program.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
using PostSharp.Samples.CustomLogging.Aspects;
using System;
// Add logging to every method in the assembly.
[assembly: LogMethod(AttributePriority = 0)]
// Remove logging from the Aspects namespace to avoid infinite recursions (logging would log itself).
[assembly:
LogMethod(AttributePriority = 1, AttributeExclude = true,
AttributeTargetTypes = "PostSharp.Samples.CustomLogging.Aspects.*")]
// Add logging to System.Math to show we can add logging to anything.
[assembly:
LogMethod(AttributePriority = 2, AttributeTargetAssemblies = "mscorlib",
AttributeTargetTypes = "System.Math")]
namespace PostSharp.Samples.CustomLogging
{
internal static class Program
{
[LogSetValue] private static int Value;
private static void Main()
{
// Demonstrate that we can create a nice hierarchical log including parameter and return values.
Value = Fibonacci(5);
// Demonstrate how exceptions are logged.
try
{
Fibonacci(-1);
}
catch
{
}
// Demonstrate that we can add logging to system methods, too.
Console.WriteLine(Math.Sin(5));
}
private static int Fibonacci(int n)
{
if (n < 0)
{
throw new ArgumentOutOfRangeException();
}
if (n == 0)
{
return 0;
}
if (n == 1)
{
return 1;
}
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}
}