KIM-JINO5 2 ヶ月 前
コミット
bd2d5c0809
5 ファイル変更34 行追加2 行削除
  1. 2 0
      Admin/Admin.csproj
  2. 14 0
      Admin/Program.cs
  3. 2 2
      Jenkinsfile
  4. 14 0
      Web.Api/Program.cs
  5. 2 0
      Web.Api/Web.Api.csproj

+ 2 - 0
Admin/Admin.csproj

@@ -30,6 +30,8 @@
 		<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="10.0.5" />
 		<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="10.0.2" />
 		<PackageReference Include="MimeKit" Version="4.15.1" />
+		<PackageReference Include="Serilog.AspNetCore" Version="10.0.0" />
+		<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
 		<PackageReference Include="System.Management" Version="10.0.5" />
 	</ItemGroup>
 

+ 14 - 0
Admin/Program.cs

@@ -1,4 +1,5 @@
 using Microsoft.Extensions.Hosting.WindowsServices;
+using Serilog;
 using SharedKernel;
 using Admin.Extensions;
 using Admin.Pages.Shared.Layout;
@@ -18,6 +19,19 @@ Console.WriteLine($"현재 시간: {DateTime.Now} / {TimeZoneInfo.Local.Id}");
 
 builder.Host.UseWindowsService();
 
+// Serilog — Production에서만 파일 로그
+if (builder.Environment.IsProduction())
+{
+    Log.Logger = new LoggerConfiguration()
+        .ReadFrom.Configuration(builder.Configuration)
+        .WriteTo.File("logs/admin-.log",
+            rollingInterval: RollingInterval.Day,
+            retainedFileCountLimit: 30,
+            outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}")
+        .CreateLogger();
+    builder.Host.UseSerilog();
+}
+
 // Add services to the container.
 var mvcBuilder = builder.Services.AddRazorPages(options =>
 {

+ 2 - 2
Jenkinsfile

@@ -23,12 +23,12 @@ pipeline {
         }
         stage('Deploy API') {
             steps {
-                bat 'chcp 65001 && robocopy publish\\api H:\\IIS\\bitforum-api\\sources /MIR /XF web.config restart.ps1 /NFL /NDL /NP & if %ERRORLEVEL% LEQ 7 exit /b 0'
+                bat 'chcp 65001 && robocopy publish\\api H:\\IIS\\bitforum-api\\sources /MIR /XF web.config restart.ps1 appsettings.Production.json /XD logs /NFL /NDL /NP & if %ERRORLEVEL% LEQ 7 exit /b 0'
             }
         }
         stage('Deploy Admin') {
             steps {
-                bat 'chcp 65001 && robocopy publish\\admin H:\\IIS\\bitforum-admin\\sources /MIR /XF web.config restart.ps1 /NFL /NDL /NP & if %ERRORLEVEL% LEQ 7 exit /b 0'
+                bat 'chcp 65001 && robocopy publish\\admin H:\\IIS\\bitforum-admin\\sources /MIR /XF web.config restart.ps1 appsettings.Production.json /XD logs /NFL /NDL /NP & if %ERRORLEVEL% LEQ 7 exit /b 0'
             }
         }
         stage('Start Services') {

+ 14 - 0
Web.Api/Program.cs

@@ -5,6 +5,7 @@ using Infrastructure;
 using SharedKernel;
 using System.Reflection;
 using Microsoft.Extensions.Hosting.WindowsServices;
+using Serilog;
 using Web.Api;
 using Web.Api.Extensions;
 using Web.Api.Hubs;
@@ -21,6 +22,19 @@ Console.WriteLine($"ENV={builder.Environment.EnvironmentName}");
 Console.WriteLine($"현재 시간: {DateTime.Now} / {TimeZoneInfo.Local.Id}");
 
 builder.Host.UseWindowsService();
+
+// Serilog — Production에서만 파일 로그
+if (builder.Environment.IsProduction())
+{
+    Log.Logger = new LoggerConfiguration()
+        .ReadFrom.Configuration(builder.Configuration)
+        .WriteTo.File("logs/webapi-.log",
+            rollingInterval: RollingInterval.Day,
+            retainedFileCountLimit: 30,
+            outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}")
+        .CreateLogger();
+    builder.Host.UseSerilog();
+}
 builder.Services.Configure<AppSettings>(builder.Configuration);
 builder.Services
     .AddApplication()

+ 2 - 0
Web.Api/Web.Api.csproj

@@ -12,6 +12,8 @@
     <PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="10.0.5" />
     <PackageReference Include="Microsoft.OpenApi" Version="3.4.0" />
     <PackageReference Include="MimeKit" Version="4.15.1" />
+    <PackageReference Include="Serilog.AspNetCore" Version="10.0.0" />
+    <PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
     <PackageReference Include="Swashbuckle.AspNetCore" Version="10.1.5" />
   </ItemGroup>