-
Notifications
You must be signed in to change notification settings - Fork 0
/
ShellEvent.cs
56 lines (47 loc) · 1.75 KB
/
ShellEvent.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
using Amazon.Runtime;
using AWS.Logger.Log4net;
using Codesanook.Common.Models;
using log4net;
using log4net.Layout;
using log4net.Repository.Hierarchy;
using Orchard.ContentManagement;
using Orchard.Environment;
using Orchard.Settings;
namespace Codesanook.CloudWatchLogs {
//https://stackoverflow.com/a/9029457/1872200
public class ShellEvent : IOrchardShellEvents {
private readonly ISiteService siteService;
public ShellEvent(
ISiteService siteService
) {
this.siteService = siteService;
}
public void Activated() => AddCloudWatchLogAppender();
public void Terminating() {
}
private void AddCloudWatchLogAppender() {
var hierarchy = ((Hierarchy)LogManager.GetRepository());
var rootLogger = hierarchy.Root;
var appender = CreateCloudWatchLogAppender();
rootLogger.AddAppender(appender);
}
private AWSAppender CreateCloudWatchLogAppender() {
var patternLayout = new PatternLayout {
ConversionPattern = "%utcdate{yyyy-MM-ddTHH:mm:ss.fffZ} [%-5level] %logger - %message%newline"
};
patternLayout.ActivateOptions();
var commonSettingPart = this.siteService.GetSiteSettings().As<CommonSettingPart>();
var appender = new AWSAppender {
Layout = patternLayout,
Credentials = new BasicAWSCredentials(
commonSettingPart.AwsAccessKey,
commonSettingPart.AwsSecretKey
),
LogGroup = "CodeSanook.CloudWatchLog",
Region = "ap-southeast-1"
};
appender.ActivateOptions();
return appender;
}
}
}