Error Interno en el servidor: ERROR No se ha seteado el logger

Saludos, Comunidad. Trabajando en la implementación de la SEEI v1.8.3 en UNVM, nos encontramos con un error en el ambiente de pruebas. Puntualmente en el panel de firmas nos aparece la leyenda:

“No se pudo conectar con el servicio de autorización”

Asumiendo que el problema viene de SUDOCU api server, vemos en su correspondiente log esta salida:

GET /firma/solicitudes_firma/ 503 1285.598 ms - -
GET /ping 200 3.980 ms - 13
GET /admin/params/gestion 200 7.769 ms - -
GET /v1/task/getByUsuarioId/1440557d-6b86-4a7b-8aba-33b8732342d0 200 15.213 ms - 35
GET /admin/params/gestion 200 12.906 ms - -
GET /mpc/herramientas/5730619f-d743-491d-90cb-e085a85d80e3 200 57.921 ms - -
GET /auth/nivel?idu=1440557d-6b86-4a7b-8aba-33b8732342d0 200 130.046 ms - 22
GET /mpc/tipos_documento/permite_importacion_express 200 130.302 ms - 4
GET /auth/sesion 200 8.115 ms - 486
GET /mpc/usuarios/ver_buscador_general?id_usuario=1440557d-6b86-4a7b-8aba-33b8732342d0 200 136.411 ms - 27
GET /documentos/estados 200 123.503 ms - 941
GET /documentos/version 200 135.742 ms - 151
GET /documentos/tipos/usuario/1440557d-6b86-4a7b-8aba-33b8732342d0/interno 200 133.140 ms - -
GET /auth/areas 200 130.643 ms - 188
GET /documentos/config/fr_sudocu_gestion 200 25.011 ms - -
GET /documentos/config/fr_sudocu_gestion 200 3.894 ms - -
GET /auth/menu_items 200 5.436 ms - 826
_arai_api Error: Request failed with status code 500
    at createError (/app/node_modules/axios/lib/core/createError.js:16:15)
    at settle (/app/node_modules/axios/lib/core/settle.js:17:12)
    at IncomingMessage.handleStreamEnd (/app/node_modules/axios/lib/adapters/http.js:269:11)
    at IncomingMessage.emit (node:events:529:35)
    at endReadableNT (node:internal/streams/readable:1400:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  config: {
    url: 'http://docs-api/docs/rest/backend/autorizacion/solicitudes?id_usuario_sso=adminsudocu&id_instalacion=es_igual_a;sudocu',
    method: 'get',
    headers: {
      Accept: 'application/json, text/plain, */*',
      authorization: 'Basic ZG9jdW1lbnRvczpMc2VfZXNkbHZfNTc2',
      'Content-Type': 'application/json',
      'User-Agent': 'axios/0.21.4'
    },
    transformRequest: [ [Function: transformRequest] ],
    transformResponse: [ [Function: transformResponse] ],
    timeout: 0,
    adapter: [Function: httpAdapter],
    xsrfCookieName: 'XSRF-TOKEN',
    xsrfHeaderName: 'X-XSRF-TOKEN',
    maxContentLength: -1,
    maxBodyLength: -1,
    validateStatus: [Function: validateStatus],
    transitional: {
      silentJSONParsing: true,
      forcedJSONParsing: true,
      clarifyTimeoutError: false
    },
    data: undefined
  },
  request: <ref *1> ClientRequest {
    _events: [Object: null prototype] {
      abort: [Function (anonymous)],
      aborted: [Function (anonymous)],
      connect: [Function (anonymous)],
      error: [Function (anonymous)],
      socket: [Function (anonymous)],
      timeout: [Function (anonymous)],
      finish: [Function: requestOnFinish]
    },
    _eventsCount: 7,
    _maxListeners: undefined,
    outputData: [],
    outputSize: 0,
    writable: true,
    destroyed: false,
    _last: true,
    chunkedEncoding: false,
    shouldKeepAlive: false,
    maxRequestsOnConnectionReached: false,
    _defaultKeepAlive: true,
    useChunkedEncodingByDefault: false,
    sendDate: false,
    _removedConnection: false,
    _removedContLen: false,
    _removedTE: false,
    strictContentLength: false,
    _contentLength: 0,
    _hasBody: true,
    _trailer: '',
    finished: true,
    _headerSent: true,
    _closed: false,
    socket: Socket {
      connecting: false,
      _hadError: false,
      _parent: null,
      _host: 'docs-api',
      _closeAfterHandlingError: false,
      _readableState: [ReadableState],
      _events: [Object: null prototype],
      _eventsCount: 7,
      _maxListeners: undefined,
      _writableState: [WritableState],
      allowHalfOpen: false,
      _sockname: null,
      _pendingData: null,
      _pendingEncoding: '',
      server: null,
      _server: null,
      parser: null,
      _httpMessage: [Circular *1],
      [Symbol(async_id_symbol)]: 9823,
      [Symbol(kHandle)]: [TCP],
      [Symbol(lastWriteQueueSize)]: 0,
      [Symbol(timeout)]: null,
      [Symbol(kBuffer)]: null,
      [Symbol(kBufferCb)]: null,
      [Symbol(kBufferGen)]: null,
      [Symbol(kCapture)]: false,
      [Symbol(kSetNoDelay)]: true,
      [Symbol(kSetKeepAlive)]: false,
      [Symbol(kSetKeepAliveInitialDelay)]: 0,
      [Symbol(kBytesRead)]: 0,
      [Symbol(kBytesWritten)]: 0
    },
    _header: 'GET /docs/rest/backend/autorizacion/solicitudes?id_usuario_sso=adminsudocu&id_instalacion=es_igual_a;sudocu HTTP/1.1\r\n' +
      'Accept: application/json, text/plain, */*\r\n' +
      'authorization: Basic ZG9jdW1lbnRvczpMc2VfZXNkbHZfNTc2\r\n' +
      'Content-Type: application/json\r\n' +
      'User-Agent: axios/0.21.4\r\n' +
      'Host: docs-api\r\n' +
      'Connection: close\r\n' +
      '\r\n',
    _keepAliveTimeout: 0,
    _onPendingData: [Function: nop],
    agent: Agent {
      _events: [Object: null prototype],
      _eventsCount: 2,
      _maxListeners: undefined,
      defaultPort: 80,
      protocol: 'http:',
      options: [Object: null prototype],
      requests: [Object: null prototype] {},
      sockets: [Object: null prototype],
      freeSockets: [Object: null prototype] {},
      keepAliveMsecs: 1000,
      keepAlive: false,
      maxSockets: Infinity,
      maxFreeSockets: 256,
      scheduling: 'lifo',
      maxTotalSockets: Infinity,
      totalSocketCount: 1,
      [Symbol(kCapture)]: false
    },
    socketPath: undefined,
    method: 'GET',
    maxHeaderSize: undefined,
    insecureHTTPParser: undefined,
    joinDuplicateHeaders: undefined,
    path: '/docs/rest/backend/autorizacion/solicitudes?id_usuario_sso=adminsudocu&id_instalacion=es_igual_a;sudocu',
    _ended: true,
    res: IncomingMessage {
      _readableState: [ReadableState],
      _events: [Object: null prototype],
      _eventsCount: 3,
      _maxListeners: undefined,
      socket: [Socket],
      httpVersionMajor: 1,
      httpVersionMinor: 1,
      httpVersion: '1.1',
      complete: true,
      rawHeaders: [Array],
      rawTrailers: [],
      joinDuplicateHeaders: undefined,
      aborted: false,
      upgrade: false,
      url: '',
      method: null,
      statusCode: 500,
      statusMessage: 'Internal Server Error',
      client: [Socket],
      _consuming: false,
      _dumped: false,
      req: [Circular *1],
      responseUrl: 'http://docs-api/docs/rest/backend/autorizacion/solicitudes?id_usuario_sso=adminsudocu&id_instalacion=es_igual_a;sudocu',
      redirects: [],
      [Symbol(kCapture)]: false,
      [Symbol(kHeaders)]: [Object],
      [Symbol(kHeadersCount)]: 12,
      [Symbol(kTrailers)]: null,
      [Symbol(kTrailersCount)]: 0
    },
    aborted: false,
    timeoutCb: null,
    upgradeOrConnect: false,
    parser: null,
    maxHeadersCount: null,
    reusedSocket: false,
    host: 'docs-api',
    protocol: 'http:',
    _redirectable: Writable {
      _writableState: [WritableState],
      _events: [Object: null prototype],
      _eventsCount: 2,
      _maxListeners: undefined,
      _options: [Object],
      _ended: true,
      _ending: true,
      _redirectCount: 0,
      _redirects: [],
      _requestBodyLength: 0,
      _requestBodyBuffers: [],
      _onNativeResponse: [Function (anonymous)],
      _currentRequest: [Circular *1],
      _currentUrl: 'http://docs-api/docs/rest/backend/autorizacion/solicitudes?id_usuario_sso=adminsudocu&id_instalacion=es_igual_a;sudocu',
      [Symbol(kCapture)]: false
    },
    [Symbol(kCapture)]: false,
    [Symbol(kBytesWritten)]: 0,
    [Symbol(kNeedDrain)]: false,
    [Symbol(corked)]: 0,
    [Symbol(kOutHeaders)]: [Object: null prototype] {
      accept: [Array],
      authorization: [Array],
      'content-type': [Array],
      'user-agent': [Array],
      host: [Array]
    },
    [Symbol(errored)]: null,
    [Symbol(kHighWaterMark)]: 16384,
    [Symbol(kRejectNonStandardBodyWrites)]: false,
    [Symbol(kUniqueHeaders)]: null
  },
  response: {
    status: 500,
    statusText: 'Internal Server Error',
    headers: {
      date: 'Mon, 16 Dec 2024 13:22:12 GMT',
      server: 'Apache',
      'api-version': '1.6',
      'content-length': '150',
      connection: 'close',
      'content-type': 'application/json'
    },
    config: {
      url: 'http://docs-api/docs/rest/backend/autorizacion/solicitudes?id_usuario_sso=adminsudocu&id_instalacion=es_igual_a;sudocu',
      method: 'get',
      headers: [Object],
      transformRequest: [Array],
      transformResponse: [Array],
      timeout: 0,
      adapter: [Function: httpAdapter],
      xsrfCookieName: 'XSRF-TOKEN',
      xsrfHeaderName: 'X-XSRF-TOKEN',
      maxContentLength: -1,
      maxBodyLength: -1,
      validateStatus: [Function: validateStatus],
      transitional: [Object],
      data: undefined
    },
    request: <ref *1> ClientRequest {
      _events: [Object: null prototype],
      _eventsCount: 7,
      _maxListeners: undefined,
      outputData: [],
      outputSize: 0,
      writable: true,
      destroyed: false,
      _last: true,
      chunkedEncoding: false,
      shouldKeepAlive: false,
      maxRequestsOnConnectionReached: false,
      _defaultKeepAlive: true,
      useChunkedEncodingByDefault: false,
      sendDate: false,
      _removedConnection: false,
      _removedContLen: false,
      _removedTE: false,
      strictContentLength: false,
      _contentLength: 0,
      _hasBody: true,
      _trailer: '',
      finished: true,
      _headerSent: true,
      _closed: false,
      socket: [Socket],
      _header: 'GET /docs/rest/backend/autorizacion/solicitudes?id_usuario_sso=adminsudocu&id_instalacion=es_igual_a;sudocu HTTP/1.1\r\n' +
        'Accept: application/json, text/plain, */*\r\n' +
        'authorization: Basic ZG9jdW1lbnRvczpMc2VfZXNkbHZfNTc2\r\n' +
        'Content-Type: application/json\r\n' +
        'User-Agent: axios/0.21.4\r\n' +
        'Host: docs-api\r\n' +
        'Connection: close\r\n' +
        '\r\n',
      _keepAliveTimeout: 0,
      _onPendingData: [Function: nop],
      agent: [Agent],
      socketPath: undefined,
      method: 'GET',
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      joinDuplicateHeaders: undefined,
      path: '/docs/rest/backend/autorizacion/solicitudes?id_usuario_sso=adminsudocu&id_instalacion=es_igual_a;sudocu',
      _ended: true,
      res: [IncomingMessage],
      aborted: false,
      timeoutCb: null,
      upgradeOrConnect: false,
      parser: null,
      maxHeadersCount: null,
      reusedSocket: false,
      host: 'docs-api',
      protocol: 'http:',
      _redirectable: [Writable],
      [Symbol(kCapture)]: false,
      [Symbol(kBytesWritten)]: 0,
      [Symbol(kNeedDrain)]: false,
      [Symbol(corked)]: 0,
      [Symbol(kOutHeaders)]: [Object: null prototype],
      [Symbol(errored)]: null,
      [Symbol(kHighWaterMark)]: 16384,
      [Symbol(kRejectNonStandardBodyWrites)]: false,
      [Symbol(kUniqueHeaders)]: null
    },
    data: {
      error: 500,
      mensaje: '500 Internal Server Error',
      descripcion: 'Error Interno en el servidor: ERROR No se ha seteado el logger.'
    }
  },
  isAxiosError: true,
  toJSON: [Function: toJSON]
}

Revisamos en diferentes lugares pero no logramos dar con la causa del problema. ¿A alguien le pasó algo así? ¿Qué es lo que estaremos haciendo mal?.

Muchas gracias.

Hola Matías, ¿cómo estás?
El error que está mostrando el sistema se puede dar varios motivos.
Los más comunes están relacionados a una caída del Nuxeo (ya que esté apagado o lento por falto de recursos) , o bien, algún problema en la configuración de Araí-Documentos.
Verifiquen si está funcionando correctamente el Nuxeo y la siguiente documentación de Araí-Documentos para revisar la configuración del repositorio.
Saludos,
Alejandro.

Buen día Alejandro, gracias por tu respuesta.

En esta instancia de prueba tenemos a Minio en reemplazo de Nuxeo, ya que la idea es usar al primero cuando vayamos a producción. Usamos como referencia https://documentacion.siu.edu.ar/documentos/docs/repo-config/#s3 para la configuración. También encontré este post, pero aplicando lo que dice seguimos en la misma situación.

En particular tenemos lo siguiente en prod/arai/docs.env:

...
###### REPOSITORIO ######
ARAI_DOCS_REPO_TIPO=S3

# MinIO
ARAI_DOCS_S3_ENDPOINT=http://minio
ARAI_DOCS_S3_SECRET=/run/secrets/minio_pass
ARAI_DOCS_S3_REGION=us-east-1
ARAI_DOCS_S3_BUCKET=arai-docs
ARAI_DOCS_S3_VERSION=2024-10-29
...

El secreto que referencia ARAI_DOCS_S3_SECRET ya está creado y se agregó sus respectivas menciones a los servicios api y docs-worker en prod/arai/docs.yml.

¿Hay algo mas que haya que configurar?

Hola Matías, revisar los siguientes parámetros, está faltando especificar la ip y puerto de minio

ARAI_DOCS_S3_ENDPOINT=http://ip:9001
ARAI_DOCS_S3_KEY=administrador
ARAI_DOCS_S3_SECRET=password
#ARAI_DOCS_S3_VERSION="latest"