mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-09 04:53:20 +03:00
feat(web-info): в секции ошибок только error и выше + путь к журналу
Печатались последние 5 строк журнала как есть, поэтому секция «Последние ошибки» показывала notice старта, а на Windows ещё и штатный шум winnt_accept — содержательные записи вытеснялись. Теперь фильтр по уровню error/crit/alert/emerg; AH02538 отсеивается отдельно как след нашего же рестарта Apache при публикации. Путь к журналу печатается всегда — за отсеянными уровнями и полным контекстом читается файл. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
88535a759b
commit
b8cbb0111a
@@ -47,10 +47,12 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-info.ps1" <па
|
||||
| `[WS HTTP OData]` | Что опубликовано для базы: SOAP-сервисы, HTTP-сервисы, стандартный OData |
|
||||
| `+ext` (`WS+ext`) | Публикуются и сервисы, поставляемые расширениями конфигурации |
|
||||
| `(нет публикаций)` | Apache стоит, но ни одна база не опубликована — нужен `/web-publish` |
|
||||
| `(пусто)` / `(нет файла)` в ошибках | Норма, а не сбой: журнал пуст или ещё не создан |
|
||||
| `(ошибок нет)` / `(нет файла)` | Норма, а не сбой: ошибок в журнале нет или он ещё не создан |
|
||||
|
||||
Секция ошибок — последние строки журнала Apache, в том числе информационные (`notice` при старте).
|
||||
Наличие строк само по себе о проблеме не говорит — смотри уровень (`error`, `warn`).
|
||||
Секция ошибок — последние 5 записей уровня `error` и выше. `notice` (строки старта), `warn`
|
||||
(штатный шум `winnt_accept` на Windows) и `AH02538` (след нашего же рестарта Apache) отсеиваются,
|
||||
иначе они вытесняют содержательное. Записи могут быть давними — смотри дату в строке. Путь к
|
||||
журналу печатается рядом: нужен полный контекст или отсеянные уровни — читай файл напрямую.
|
||||
|
||||
Публикация в списке не означает, что база отвечает: `/web-info` читает `httpd.conf` и дескрипторы,
|
||||
а не опрашивает URL-ы. Если нужно убедиться — дёрни URL.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# web-info v1.1 — Apache & 1C publication status
|
||||
# web-info v1.2 — Apache & 1C publication status
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
<#
|
||||
.SYNOPSIS
|
||||
@@ -162,13 +162,18 @@ if (-not $errorLog -or -not (Test-Path $errorLog)) {
|
||||
}
|
||||
|
||||
if ($errorLog -and (Test-Path $errorLog)) {
|
||||
$lines = Get-Content $errorLog -Tail 5 -ErrorAction SilentlyContinue
|
||||
if ($lines -and $lines.Count -gt 0) {
|
||||
Write-Host "Журнал: $errorLog" -ForegroundColor DarkGray
|
||||
# Только error и выше: warn забит штатным шумом winnt_accept, notice — строки старта.
|
||||
# AH02538 — след нашего же рестарта (родитель убит), пишется как crit при каждой публикации
|
||||
$lines = Get-Content $errorLog -ErrorAction SilentlyContinue |
|
||||
Where-Object { $_ -match '\[[a-z_]+:(error|crit|alert|emerg)\]' -and $_ -notmatch 'AH02538' } |
|
||||
Select-Object -Last 5
|
||||
if ($lines) {
|
||||
foreach ($line in $lines) {
|
||||
Write-Host " $line" -ForegroundColor DarkGray
|
||||
}
|
||||
} else {
|
||||
Write-Host "(пусто)" -ForegroundColor Green
|
||||
Write-Host "(ошибок нет)" -ForegroundColor Green
|
||||
}
|
||||
} else {
|
||||
Write-Host "(нет файла)" -ForegroundColor Green
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# web-info v1.1 — Apache & 1C publication status
|
||||
# web-info v1.2 — Apache & 1C publication status
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
|
||||
"""
|
||||
@@ -151,22 +151,28 @@ def main():
|
||||
m_log = re.search(r'(?m)^\s*ErrorLog\s+"?([^"\r\n]+)"?', conf_content)
|
||||
if m_log:
|
||||
log_path = m_log.group(1).strip()
|
||||
error_log = log_path if os.path.isabs(log_path) else os.path.join(apache_path, log_path)
|
||||
error_log = os.path.normpath(
|
||||
log_path if os.path.isabs(log_path) else os.path.join(apache_path, log_path))
|
||||
if not error_log or not os.path.exists(error_log):
|
||||
error_log = next((p for p in (os.path.join(apache_path, 'logs', n)
|
||||
for n in ('error_log', 'error.log'))
|
||||
if os.path.exists(p)), None)
|
||||
|
||||
if error_log and os.path.exists(error_log):
|
||||
print(f'Журнал: {error_log}')
|
||||
try:
|
||||
with open(error_log, 'r', encoding='utf-8-sig', errors='replace') as f:
|
||||
all_lines = f.readlines()
|
||||
tail_lines = all_lines[-5:] if len(all_lines) >= 5 else all_lines
|
||||
if tail_lines:
|
||||
for line in tail_lines:
|
||||
# Только error и выше: warn забит штатным шумом winnt_accept, notice — строки старта.
|
||||
# AH02538 — след нашего же рестарта (родитель убит), пишется как crit при каждой публикации
|
||||
err_lines = [ln for ln in all_lines
|
||||
if re.search(r'\[[a-z_]+:(error|crit|alert|emerg)\]', ln)
|
||||
and 'AH02538' not in ln]
|
||||
if err_lines:
|
||||
for line in err_lines[-5:]:
|
||||
print(f' {line.rstrip()}')
|
||||
else:
|
||||
print('(пусто)')
|
||||
print('(ошибок нет)')
|
||||
except Exception:
|
||||
print('(ошибка чтения)')
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user