@@ -27,19 +27,19 @@ import { AdminService, LogFile, LogContent } from '../../services/admin.service'
2727 FormsModule
2828 ] ,
2929 template : `
30- <div class="p-6 bg-md-sys-color-surface h-screen overflow-hidden ">
30+ <div class="p-6 bg-md-sys-color-surface h-screen">
3131 <h1 class="md-typescale-headline-large text-md-sys-color-on-surface mb-6">로그 관리</h1>
3232
33- <div class="grid grid-cols-1 lg:grid-cols-3 gap-6 h-[ calc(100vh- 8rem)] ">
33+ <div class="grid grid-cols-1 lg:grid-cols-3 gap-6" style="height: calc(100vh - 8rem); ">
3434 <!-- 로그 파일 목록 -->
35- <div class="md-card bg-md-sys-color-surface-container text-md-sys-color-on-surface lg:col-span-1">
35+ <div class="md-card bg-md-sys-color-surface-container text-md-sys-color-on-surface lg:col-span-1" style="max-height: 100%; display: flex; flex-direction: column;" >
3636 <div class="flex items-center justify-between mb-4">
3737 <h2 class="md-typescale-title-large text-md-sys-color-on-surface">로그 파일 목록</h2>
3838 <button class="md-button md-button-text p-2 rounded-full" (click)="refreshLogFiles()">
3939 <mat-icon class="w-5 h-5 text-md-sys-color-primary">refresh</mat-icon>
4040 </button>
4141 </div>
42- <div class="flex-1 overflow-y-auto">
42+ <div class="flex-1 overflow-y-auto" style="min-height: 0;" >
4343 <div *ngIf="logFiles.length > 0" class="space-y-2">
4444 <div
4545 *ngFor="let file of logFiles"
@@ -68,7 +68,7 @@ import { AdminService, LogFile, LogContent } from '../../services/admin.service'
6868 </div>
6969
7070 <!-- 로그 내용 뷰어 -->
71- <div class="md-card bg-md-sys-color-surface-container text-md-sys-color-on-surface lg:col-span-2">
71+ <div class="md-card bg-md-sys-color-surface-container text-md-sys-color-on-surface lg:col-span-2" style="max-height: 100%; display: flex; flex-direction: column;" >
7272 <div class="flex items-center justify-between mb-4">
7373 <h2 class="md-typescale-title-large text-md-sys-color-on-surface">
7474 {{ selectedFile ? selectedFile.name : '로그 뷰어' }}
@@ -83,7 +83,7 @@ import { AdminService, LogFile, LogContent } from '../../services/admin.service'
8383 </button>
8484 </div>
8585 </div>
86- <div class="flex-1 overflow- hidden">
86+ <div class="flex-1" style="min-height: 0; overflow: hidden; ">
8787 <div *ngIf="!selectedFile" class="flex items-center justify-center h-full text-md-sys-color-on-surface-variant">
8888 <div class="text-center">
8989 <mat-icon class="w-16 h-16 mb-4 text-md-sys-color-outline">visibility</mat-icon>
@@ -103,8 +103,8 @@ import { AdminService, LogFile, LogContent } from '../../services/admin.service'
103103 <p class="md-typescale-body-medium">로그 내용을 불러오는 중...</p>
104104 </div>
105105
106- <div *ngIf="logContent" class=" flex flex-col h-full ">
107- <div class="flex items-center justify-between p-3 bg-md-sys-color-surface-container-high rounded-xl mb-4">
106+ <div *ngIf="logContent" style="height: 100%; display: flex; flex-direction: column; ">
107+ <div class="flex items-center justify-between p-3 bg-md-sys-color-surface-container-high rounded-xl mb-4" style="flex-shrink: 0;" >
108108 <span class="md-typescale-body-medium text-md-sys-color-on-surface">총 {{ logContent.lines }}줄 표시</span>
109109 <div class="flex gap-1">
110110 <button
@@ -121,13 +121,15 @@ import { AdminService, LogFile, LogContent } from '../../services/admin.service'
121121 (click)="setLogFilter('info')">정보</button>
122122 </div>
123123 </div>
124- <div class="flex-1 bg-gray-900 rounded-xl overflow-auto">
125- <div *ngFor="let line of getFilteredLogLines(); let i = index"
126- [class]="'flex items-start gap-3 p-2 font-mono text-sm border-b border-gray-800 hover:bg-gray-800 ' + getLogLineClass(line)">
127- <span class="w-12 text-gray-500 text-right select-none">{{ i + 1 }}</span>
128- <span class="w-36 text-gray-400 shrink-0">{{ extractTimestamp(line) }}</span>
129- <span [class]="'w-16 font-bold uppercase shrink-0 ' + getLogLevelColorClass(extractLogLevel(line))">{{ extractLogLevel(line) }}</span>
130- <span class="flex-1 text-gray-200 break-words">{{ extractMessage(line) }}</span>
124+ <div style="flex: 1; min-height: 0; overflow: hidden;">
125+ <div class="bg-gray-900 rounded-xl" style="height: 100%; overflow-y: auto;">
126+ <div *ngFor="let line of getFilteredLogLines(); let i = index"
127+ [class]="'flex items-start gap-3 p-2 font-mono text-sm border-b border-gray-800 hover:bg-gray-800 ' + getLogLineClass(line)">
128+ <span class="w-12 text-gray-500 text-right select-none">{{ i + 1 }}</span>
129+ <span class="w-36 text-gray-400 shrink-0">{{ extractTimestamp(line) }}</span>
130+ <span [class]="'w-16 font-bold uppercase shrink-0 ' + getLogLevelColorClass(extractLogLevel(line))">{{ extractLogLevel(line) }}</span>
131+ <span class="flex-1 text-gray-200 break-words">{{ extractMessage(line) }}</span>
132+ </div>
131133 </div>
132134 </div>
133135 </div>
@@ -141,6 +143,7 @@ import { AdminService, LogFile, LogContent } from '../../services/admin.service'
141143 padding: 24px;
142144 display: flex;
143145 flex-direction: column;
146+ max-height: 100%;
144147 }
145148
146149 .md-button {
0 commit comments