private void CreateStreamWriter() { lock (CreationLock) { if (StreamOk) { return; } var directory = new DirectoryInfo(_directory); var lastFile = directory.GetFiles() .Where(file => file.FullName.EndsWith(".log")) .OrderByDescending(f => f.LastWriteTime) .FirstOrDefault()?.Name; var opened = false; if (!string.IsNullOrEmpty(lastFile)) { try { Console.WriteLine("Using existing log file: " + lastFile); TryOpenStream(lastFile); _logFileSize = (ulong)_streamWriter.BaseStream.Length; opened = true; if (_logFileSize > MaxLogFileSize) { Console.WriteLine("Or not, it is already too big."); _streamWriter.Close(); _streamWriter = null; opened = false; } } catch (Exception exc) { Console.WriteLine("Can't use existing log file: " + exc.Message); } } if (!opened) { var dt = DateTime.Now; var logFileName = $"Log_{dt:yyyy-MM-dd_HH-mm-ss}_{Utilis.GenerateRandomHexString(10)}.log"; Console.WriteLine("Creating log file: " + logFileName); TryOpenStream(logFileName); _logFileSize = 0; } } }
public async Task <string> WriteAndGetViewName(string razorViewContent, string viewDirectory = null, string viewName = null) { viewName = viewName ?? "generated_" + DateTime.Now.Ticks + "_" + Utilis.GenerateRandomHexString(25); viewDirectory = viewDirectory ?? Path.Combine(EnvVarManager.GetOrThrow("TEMPORARY_VIEWS_PATH"), "Views/Shared"); var viewPath = Path.Combine(viewDirectory, viewName + ".cshtml") .Replace("\\", "/"); _generatedViewPath = viewPath; using (var fs = new FileStream(viewPath, FileMode.Create)) using (var sw = new StreamWriter(fs)) { await sw.WriteAsync(razorViewContent); } return(viewName); }
public async Task <FileEntity> Upload(IFormFile file) { var subDir = "upload/files"; var uploadedFilesDirectory = Path.Combine(EnvVarManager.GetOrThrow("CONTENT_DIRECTORY"), subDir).Replace("\\", "/"); // Console.WriteLine("Creating directory..."); if (!Directory.Exists(uploadedFilesDirectory)) { Logger.LogInfo("Creating files directory: " + uploadedFilesDirectory); Directory.CreateDirectory(uploadedFilesDirectory); } var fileEntity = new FileEntity { Name = SanitizeFileName(file.FileName) + "_" + Utilis.GenerateRandomHexString(10), Extension = Path.GetExtension(file.FileName).Substring(1).ToLower(), OriginalName = file.FileName, Size = (int)file.Length, SubDirectory = subDir }; var filePath = Path.Combine(uploadedFilesDirectory, $"{fileEntity.Name}.{fileEntity.Extension}") .Replace("\\", "/"); // Console.WriteLine("Saving file..."); using (var fileStream = new FileStream(filePath, FileMode.Create)) { await file.CopyToAsync(fileStream); } fileEntity.Path = filePath; await DataLayer.Repo <FileEntity>().Add(fileEntity); return(fileEntity); }