Отключение файлового логирования для API сервера и перенаправление в stdout
Browse files- fallback.py +27 -9
fallback.py
CHANGED
|
@@ -241,14 +241,20 @@ def main():
|
|
| 241 |
api_env = os.environ.copy()
|
| 242 |
api_env["TEN_AGENT_DIR"] = str(agents_dir)
|
| 243 |
api_env["GOCACHE"] = str(go_cache_dir) # Устанавливаем переменную GOCACHE
|
| 244 |
-
|
| 245 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 246 |
|
| 247 |
# Выводим важные переменные окружения
|
| 248 |
print(f"Environment variables:")
|
| 249 |
print(f"TEN_AGENT_DIR: {api_env.get('TEN_AGENT_DIR')}")
|
| 250 |
-
print(f"
|
| 251 |
-
print(f"
|
|
|
|
|
|
|
| 252 |
|
| 253 |
# Дополнительно проверяем права на исполнение через ls -la
|
| 254 |
subprocess.run(["ls", "-la", api_bin_str], check=True)
|
|
@@ -256,12 +262,11 @@ def main():
|
|
| 256 |
# Проверяем директорию логов
|
| 257 |
subprocess.run(["ls", "-la", str(logs_dir)], check=True)
|
| 258 |
|
| 259 |
-
# Запускаем API сервер
|
| 260 |
print(f"Executing API server: {api_bin_str}")
|
| 261 |
try:
|
| 262 |
-
# Аргументы командной строки для указания директории логов
|
| 263 |
api_process = subprocess.Popen(
|
| 264 |
-
[api_bin_str, "--
|
| 265 |
env=api_env,
|
| 266 |
stdout=subprocess.PIPE,
|
| 267 |
stderr=subprocess.PIPE
|
|
@@ -270,8 +275,8 @@ def main():
|
|
| 270 |
print(f"Failed to start API server: {e}")
|
| 271 |
sys.exit(1)
|
| 272 |
|
| 273 |
-
# Даем серверу время для запуска
|
| 274 |
-
time.sleep(
|
| 275 |
|
| 276 |
# Проверяем, запустился ли сервер
|
| 277 |
if api_process.poll() is not None:
|
|
@@ -281,6 +286,15 @@ def main():
|
|
| 281 |
print(f"STDERR: {stderr.decode()}")
|
| 282 |
sys.exit(1)
|
| 283 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 284 |
print("API server started successfully")
|
| 285 |
|
| 286 |
# Запускаем playground
|
|
@@ -314,6 +328,10 @@ def main():
|
|
| 314 |
def stream_output(process, name):
|
| 315 |
for line in iter(process.stdout.readline, b''):
|
| 316 |
print(f"[{name}] {line.decode().strip()}")
|
|
|
|
|
|
|
|
|
|
|
|
|
| 317 |
|
| 318 |
api_thread = threading.Thread(target=stream_output, args=(api_process, "API"))
|
| 319 |
ui_thread = threading.Thread(target=stream_output, args=(playground_process, "UI"))
|
|
|
|
| 241 |
api_env = os.environ.copy()
|
| 242 |
api_env["TEN_AGENT_DIR"] = str(agents_dir)
|
| 243 |
api_env["GOCACHE"] = str(go_cache_dir) # Устанавливаем переменную GOCACHE
|
| 244 |
+
|
| 245 |
+
# Отключаем логирование в файл
|
| 246 |
+
api_env["GF_LOG_MODE"] = "console" # Логирование только в консоль
|
| 247 |
+
api_env["LOG_LEVEL"] = "error" # Минимальный уровень логирования
|
| 248 |
+
api_env["TEN_LOG_DISABLE_FILE"] = "true" # Отключаем логирование в файл (кастомная переменная)
|
| 249 |
+
api_env["GF_LOG_FILE_STAT"] = "false" # Отключаем статистику файлов логов
|
| 250 |
|
| 251 |
# Выводим важные переменные окружения
|
| 252 |
print(f"Environment variables:")
|
| 253 |
print(f"TEN_AGENT_DIR: {api_env.get('TEN_AGENT_DIR')}")
|
| 254 |
+
print(f"GF_LOG_MODE: {api_env.get('GF_LOG_MODE')}")
|
| 255 |
+
print(f"LOG_LEVEL: {api_env.get('LOG_LEVEL')}")
|
| 256 |
+
print(f"TEN_LOG_DISABLE_FILE: {api_env.get('TEN_LOG_DISABLE_FILE')}")
|
| 257 |
+
print(f"GOCACHE: {api_env.get('GOCACHE')}")
|
| 258 |
|
| 259 |
# Дополнительно проверяем права на исполнение через ls -la
|
| 260 |
subprocess.run(["ls", "-la", api_bin_str], check=True)
|
|
|
|
| 262 |
# Проверяем директорию логов
|
| 263 |
subprocess.run(["ls", "-la", str(logs_dir)], check=True)
|
| 264 |
|
| 265 |
+
# Запускаем API сервер с передачей аргумента для отключения файлового логирования
|
| 266 |
print(f"Executing API server: {api_bin_str}")
|
| 267 |
try:
|
|
|
|
| 268 |
api_process = subprocess.Popen(
|
| 269 |
+
[api_bin_str, "--log_to_stdout", "--disable_file_logging"],
|
| 270 |
env=api_env,
|
| 271 |
stdout=subprocess.PIPE,
|
| 272 |
stderr=subprocess.PIPE
|
|
|
|
| 275 |
print(f"Failed to start API server: {e}")
|
| 276 |
sys.exit(1)
|
| 277 |
|
| 278 |
+
# Даем серверу время для запуска и выводим любые ошибки сразу
|
| 279 |
+
time.sleep(2)
|
| 280 |
|
| 281 |
# Проверяем, запустился ли сервер
|
| 282 |
if api_process.poll() is not None:
|
|
|
|
| 286 |
print(f"STDERR: {stderr.decode()}")
|
| 287 |
sys.exit(1)
|
| 288 |
|
| 289 |
+
# Проверяем доступность API
|
| 290 |
+
print("Testing API server availability...")
|
| 291 |
+
try:
|
| 292 |
+
import urllib.request
|
| 293 |
+
response = urllib.request.urlopen("http://localhost:8080/graphs")
|
| 294 |
+
print(f"API server is responding! Response: {response.read().decode()}")
|
| 295 |
+
except Exception as e:
|
| 296 |
+
print(f"API server is not responding yet, but continuing... ({e})")
|
| 297 |
+
|
| 298 |
print("API server started successfully")
|
| 299 |
|
| 300 |
# Запускаем playground
|
|
|
|
| 328 |
def stream_output(process, name):
|
| 329 |
for line in iter(process.stdout.readline, b''):
|
| 330 |
print(f"[{name}] {line.decode().strip()}")
|
| 331 |
+
|
| 332 |
+
# После завершения стандартного вывода, читаем stderr
|
| 333 |
+
for line in iter(process.stderr.readline, b''):
|
| 334 |
+
print(f"[{name} ERROR] {line.decode().strip()}")
|
| 335 |
|
| 336 |
api_thread = threading.Thread(target=stream_output, args=(api_process, "API"))
|
| 337 |
ui_thread = threading.Thread(target=stream_output, args=(playground_process, "UI"))
|