public void WriteLogs_ReusesLastFile() { DirectoryInfo directory = new DirectoryInfo(_logFilePath); directory.Create(); int count = directory.EnumerateFiles().Count(); Assert.Equal(0, count); for (int i = 0; i < 3; i++) { FileTraceWriter traceWriter = new FileTraceWriter(_logFilePath, TraceLevel.Verbose); traceWriter.Verbose("Testing"); traceWriter.Flush(); } count = directory.EnumerateFiles().Count(); Assert.Equal(1, count); string logFile = directory.EnumerateFiles().First().FullName; string[] fileLines = File.ReadAllLines(logFile); Assert.Equal(3, fileLines.Length); }
/// <summary> /// Initializes a new instance of the <see cref="MainWindow" /> class /// </summary> public MainWindow() { FileTraceWriter.LogMessage("App Started"); InitializeComponent(); ServicePointManager.DefaultConnectionLimit = 1000; // You can use the next line to insert your own subscription key, instead of using UI to set license key. this.ViewModel = new MainViewModel() { FaceIdentificationDescription = "Tell whom an input face belongs to given a tagged person database. Here we only handle tagged person database in following format: 1). One root folder. 2). Sub-folders are named as person's name. 3). Each person's images are put into their own sub-folder. Pick the root folder, then choose an image to identify, all faces will be shown on the image with the identified person's name.", SortMyPhotosDescription = "Process your photo stores into a people searchable database.", }; this.DataContext = this.ViewModel; this._scenariosControl.SampleScenarioList = new Scenario[] { new Scenario() { PageClass = typeof(FaceIdentificationPage), Title = "Face Identification", }, new Scenario() { PageClass = typeof(SortMyPhotosPage), Title = "Sort My Photos", }, }; // Set the default endpoint when main windows is initiated. var mainWindow = GetWindow(this) as MainWindow; mainWindow?._scenariosControl.SetSubscriptionPageEndpoint(DefaultEndpoint); FileTraceWriter.LogMessage("Main Window constructed"); }
public void Trace_AppliesLevelFilter() { DirectoryInfo directory = new DirectoryInfo(_logFilePath); directory.Create(); int count = directory.EnumerateFiles().Count(); Assert.Equal(0, count); FileTraceWriter traceWriter = new FileTraceWriter(_logFilePath, TraceLevel.Info); traceWriter.Verbose("Test Verbose"); traceWriter.Info("Test Info"); traceWriter.Warning("Test Warning"); traceWriter.Error("Test Error"); traceWriter.Flush(); string logFile = directory.EnumerateFiles().First().FullName; string text = File.ReadAllText(logFile); Assert.True(text.Contains("Test Error")); Assert.True(text.Contains("Test Warning")); Assert.True(text.Contains("Test Info")); Assert.False(text.Contains("Test Verbose")); }
private void CreateTestFunctionLogs(string logRoot, string functionName) { string functionLogPath = Path.Combine(logRoot, functionName); FileTraceWriter traceWriter = new FileTraceWriter(functionLogPath, TraceLevel.Verbose); traceWriter.Verbose("Test log message"); traceWriter.Flush(); }
public StructuredLogWriter(IScriptEventManager eventManager, string baseLogPath) { string logPath = Path.Combine(baseLogPath, "structured"); _traceWriter = new FileTraceWriter(logPath, TraceLevel.Verbose, s => s); _subscription = eventManager.OfType <StructuredLogEntryEvent>() .Subscribe(OnLogEntry); }
private void WriteLogs(string logFilePath, int numLogs) { FileTraceWriter traceWriter = new FileTraceWriter(logFilePath, TraceLevel.Verbose); for (int i = 0; i < numLogs; i++) { traceWriter.Verbose(string.Format("Test message {0} {1}", Thread.CurrentThread.ManagedThreadId, i)); } traceWriter.Flush(); }
public async Task SetNewLogFile_PurgesOldLogFiles() { DirectoryInfo directory = new DirectoryInfo(_logFilePath); directory.Create(); // below test expects the retention days to be set to 1 Assert.Equal(1, FileTraceWriter.LastModifiedCutoffDays); // create some log files List <FileInfo> logFiles = new List <FileInfo>(); int initialCount = 5; for (int i = 0; i < initialCount; i++) { string fileName = string.Format("{0}-{1}.log", i, FileTraceWriter.GetInstanceId()); string path = Path.Combine(_logFilePath, fileName); Thread.Sleep(50); File.WriteAllText(path, "Test Logs"); logFiles.Add(new FileInfo(path)); } // mark some of the files as old - we expect // all of these to be purged File.SetLastWriteTime(logFiles[2].FullName, DateTime.Now.Subtract(TimeSpan.FromDays(1))); File.SetLastWriteTime(logFiles[1].FullName, DateTime.Now.Subtract(TimeSpan.FromDays(1))); File.SetLastWriteTime(logFiles[0].FullName, DateTime.Now.Subtract(TimeSpan.FromDays(2))); await Task.Delay(2000); var files = directory.GetFiles().OrderByDescending(p => p.LastWriteTime).ToArray(); Assert.Equal(initialCount, files.Length); FileTraceWriter traceWriter = new FileTraceWriter(_logFilePath, TraceLevel.Verbose); traceWriter.SetNewLogFile(); files = directory.GetFiles().OrderByDescending(p => p.LastWriteTime).ToArray(); await TestHelpers.Await(() => { files = directory.GetFiles().OrderByDescending(p => p.LastWriteTime).ToArray(); return(files.Length == 2); }, timeout : 2000); // verify the correct log files were purged and the 2 // most recent files were retained Assert.True(files[0].Name.StartsWith("4")); Assert.True(files[1].Name.StartsWith("3")); }
public async Task SetNewLogFile_PurgesOldLogFiles() { DirectoryInfo directory = new DirectoryInfo(_logFilePath); directory.Create(); // below test expects the retention days to be set to 1 Assert.Equal(1, FileTraceWriter.LastModifiedCutoffDays); // create some log files List<FileInfo> logFiles = new List<FileInfo>(); int initialCount = 5; for (int i = 0; i < initialCount; i++) { string fileName = string.Format("{0}-{1}.log", i, FileTraceWriter.GetInstanceId()); string path = Path.Combine(_logFilePath, fileName); Thread.Sleep(50); File.WriteAllText(path, "Test Logs"); logFiles.Add(new FileInfo(path)); } // mark some of the files as old - we expect // all of these to be purged File.SetLastWriteTime(logFiles[2].FullName, DateTime.Now.Subtract(TimeSpan.FromDays(1))); File.SetLastWriteTime(logFiles[1].FullName, DateTime.Now.Subtract(TimeSpan.FromDays(1))); File.SetLastWriteTime(logFiles[0].FullName, DateTime.Now.Subtract(TimeSpan.FromDays(2))); await Task.Delay(2000); var files = directory.GetFiles().OrderByDescending(p => p.LastWriteTime).ToArray(); Assert.Equal(initialCount, files.Length); FileTraceWriter traceWriter = new FileTraceWriter(_logFilePath, TraceLevel.Verbose); traceWriter.SetNewLogFile(); files = directory.GetFiles().OrderByDescending(p => p.LastWriteTime).ToArray(); await TestHelpers.Await(() => { files = directory.GetFiles().OrderByDescending(p => p.LastWriteTime).ToArray(); return files.Length == 2; }, timeout: 2000); // verify the correct log files were purged and the 2 // most recent files were retained Assert.True(files[0].Name.StartsWith("4")); Assert.True(files[1].Name.StartsWith("3")); }
protected MigrationServiceManager() { TryLoadMigrationService(); m_serviceContainer = new ServiceContainer(); IMigrationService migrationServiceProxy = new MigrationServiceClient(); m_serviceContainer.AddService(typeof(IMigrationService), migrationServiceProxy); IRuntimeTrace runtimeTraceProxy = new RuntimeTraceClient(); m_serviceContainer.AddService(typeof(IRuntimeTrace), runtimeTraceProxy); m_writer = new FileTraceWriter(); m_writer.StartListening(); }
public void SetNewLogFile_EmptyDirectory_Succeeds() { DirectoryInfo directory = new DirectoryInfo(_logFilePath); directory.Create(); FileTraceWriter traceWriter = new FileTraceWriter(_logFilePath, TraceLevel.Verbose); traceWriter.SetNewLogFile(); var files = directory.GetFiles().OrderByDescending(p => p.LastWriteTime).ToArray(); Assert.Equal(0, files.Length); traceWriter.Verbose("Test log"); traceWriter.Flush(); files = directory.GetFiles().OrderByDescending(p => p.LastWriteTime).ToArray(); Assert.Equal(1, files.Length); }
public void Trace_WritesExpectedLogs() { DirectoryInfo directory = new DirectoryInfo(_logFilePath); directory.Create(); int count = directory.EnumerateFiles().Count(); Assert.Equal(0, count); FileTraceWriter traceWriter = new FileTraceWriter(_logFilePath, TraceLevel.Info); traceWriter.Verbose("Test Verbose"); traceWriter.Info("Test Info"); traceWriter.Warning("Test Warning"); traceWriter.Error("Test Error"); // trace a system event - expect it to be ignored var properties = new Dictionary <string, object> { { ScriptConstants.TracePropertyIsSystemTraceKey, true } }; traceWriter.Info("Test System", properties); traceWriter.Flush(); string logFile = directory.EnumerateFiles().First().FullName; string text = File.ReadAllText(logFile); Assert.True(text.Contains("Test Error")); Assert.True(text.Contains("Test Warning")); Assert.True(text.Contains("Test Info")); Assert.False(text.Contains("Test Verbose")); Assert.False(text.Contains("Test System")); }
private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) { FileTraceWriter.LogError(e.Exception, $"UnhandledException, {e.Exception.Message}"); }
public static void WarmUp(WebHostSettings settings) { var traceWriter = new FileTraceWriter(Path.Combine(settings.LogPath, "Host"), TraceLevel.Info); ScriptHost host = null; try { traceWriter.Info("Warm up started"); string rootPath = settings.ScriptPath; if (Directory.Exists(rootPath)) { Directory.Delete(rootPath, true); } Directory.CreateDirectory(rootPath); string content = ReadResourceString("Functions.host.json"); File.WriteAllText(Path.Combine(rootPath, "host.json"), content); // read in the C# function string functionPath = Path.Combine(rootPath, "Test-CSharp"); Directory.CreateDirectory(functionPath); content = ReadResourceString("Functions.Test_CSharp.function.json"); File.WriteAllText(Path.Combine(functionPath, "function.json"), content); content = ReadResourceString("Functions.Test_CSharp.run.csx"); File.WriteAllText(Path.Combine(functionPath, "run.csx"), content); // read in the F# function functionPath = Path.Combine(rootPath, "Test-FSharp"); Directory.CreateDirectory(functionPath); content = ReadResourceString("Functions.Test_FSharp.function.json"); File.WriteAllText(Path.Combine(functionPath, "function.json"), content); content = ReadResourceString("Functions.Test_FSharp.run.fsx"); File.WriteAllText(Path.Combine(functionPath, "run.fsx"), content); traceWriter.Info("Warm up functions deployed"); ScriptHostConfiguration config = new ScriptHostConfiguration { RootScriptPath = rootPath, FileLoggingMode = FileLoggingMode.Never, RootLogPath = settings.LogPath, TraceWriter = traceWriter, FileWatchingEnabled = false }; config.HostConfig.StorageConnectionString = null; config.HostConfig.DashboardConnectionString = null; host = ScriptHost.Create(ScriptSettingsManager.Instance, config); traceWriter.Info(string.Format("Starting Host (Id={0})", host.ScriptConfig.HostConfig.HostId)); host.Start(); var arguments = new Dictionary<string, object> { { "input", "{}" } }; host.CallAsync("Test-CSharp", arguments).Wait(); host.CallAsync("Test-FSharp", arguments).Wait(); host.Stop(); traceWriter.Info("Warm up succeeded"); } catch (Exception ex) { traceWriter.Error(string.Format("Warm up failed: {0}", ex)); } finally { host?.Dispose(); traceWriter.Dispose(); } }
public static void WarmUp(WebHostSettings settings) { var traceWriter = new FileTraceWriter(Path.Combine(settings.LogPath, "Host"), TraceLevel.Info); ScriptHost host = null; try { traceWriter.Info("Warm up started"); string rootPath = settings.ScriptPath; if (Directory.Exists(rootPath)) { Directory.Delete(rootPath, true); } Directory.CreateDirectory(rootPath); string content = ReadResourceString("Functions.host.json"); File.WriteAllText(Path.Combine(rootPath, "host.json"), content); // read in the C# function string functionPath = Path.Combine(rootPath, "Test-CSharp"); Directory.CreateDirectory(functionPath); content = ReadResourceString("Functions.Test_CSharp.function.json"); File.WriteAllText(Path.Combine(functionPath, "function.json"), content); content = ReadResourceString("Functions.Test_CSharp.run.csx"); File.WriteAllText(Path.Combine(functionPath, "run.csx"), content); // read in the F# function functionPath = Path.Combine(rootPath, "Test-FSharp"); Directory.CreateDirectory(functionPath); content = ReadResourceString("Functions.Test_FSharp.function.json"); File.WriteAllText(Path.Combine(functionPath, "function.json"), content); content = ReadResourceString("Functions.Test_FSharp.run.fsx"); File.WriteAllText(Path.Combine(functionPath, "run.fsx"), content); traceWriter.Info("Warm up functions deployed"); ScriptHostConfiguration config = new ScriptHostConfiguration { RootScriptPath = rootPath, FileLoggingMode = FileLoggingMode.Never, RootLogPath = settings.LogPath, TraceWriter = traceWriter, FileWatchingEnabled = false }; config.HostConfig.StorageConnectionString = null; config.HostConfig.DashboardConnectionString = null; host = ScriptHost.Create(config); traceWriter.Info(string.Format("Starting Host (Id={0})", host.ScriptConfig.HostConfig.HostId)); host.Start(); var arguments = new Dictionary <string, object> { { "input", "{}" } }; host.CallAsync("Test-CSharp", arguments).Wait(); host.CallAsync("Test-FSharp", arguments).Wait(); host.Stop(); traceWriter.Info("Warm up succeeded"); } catch (Exception ex) { traceWriter.Error(string.Format("Warm up failed: {0}", ex)); } finally { host?.Dispose(); traceWriter.Dispose(); } }
public void Trace_WritesExpectedLogs() { DirectoryInfo directory = new DirectoryInfo(_logFilePath); directory.Create(); int count = directory.EnumerateFiles().Count(); Assert.Equal(0, count); FileTraceWriter traceWriter = new FileTraceWriter(_logFilePath, TraceLevel.Info); traceWriter.Verbose("Test Verbose"); traceWriter.Info("Test Info"); traceWriter.Warning("Test Warning"); traceWriter.Error("Test Error"); // trace a system event - expect it to be ignored var properties = new Dictionary<string, object> { { ScriptConstants.TracePropertyIsSystemTraceKey, true } }; traceWriter.Info("Test System", properties); traceWriter.Flush(); string logFile = directory.EnumerateFiles().First().FullName; string text = File.ReadAllText(logFile); Assert.True(text.Contains("Test Error")); Assert.True(text.Contains("Test Warning")); Assert.True(text.Contains("Test Info")); Assert.False(text.Contains("Test Verbose")); Assert.False(text.Contains("Test System")); }
public void Trace_ReusesLastFile() { DirectoryInfo directory = new DirectoryInfo(_logFilePath); directory.Create(); int count = directory.EnumerateFiles().Count(); Assert.Equal(0, count); for (int i = 0; i < 3; i++) { FileTraceWriter traceWriter = new FileTraceWriter(_logFilePath, TraceLevel.Verbose); traceWriter.Verbose("Testing"); traceWriter.Flush(); } count = directory.EnumerateFiles().Count(); Assert.Equal(1, count); string logFile = directory.EnumerateFiles().First().FullName; string[] fileLines = File.ReadAllLines(logFile); Assert.Equal(3, fileLines.Length); }