Logback: ¿Cómo separar los registros para cada "usuario" en una aplicación web?

Tengo que generar registros para cada "usuario" de nuestra aplicación web. Para eso, utilizamos un SiftingAppender con un discriminador.

    <appender name="SEPARATED" class="ch.qos.logback.classic.sift.SiftingAppender">
        <discriminator>
            <key>userid</key>
            <defaultValue>unknown</defaultValue>
        </discriminator>
        <sift>
            <appender name="MYAPPLI_${userid}_SEPARATED" class="ch.qos.logback.core.FileAppender">
                <file>${LOG}/MYAPPLI/MYAPPLI_${userid}_SEPARATED.log</file>
                <append>true</append>
                <encoder>
                    <pattern>&lt;%d{yyyy-MM-dd HH:mm:ss}&gt; | %.-1level | %msg %throwable{5}%n</pattern>                    
                </encoder>
            </appender>
        </sift>
    </appender>

Agregamos un filtro web de servlet para agregar al usuario de la sesión al MDC y eliminarlo después de ...

Pero tenemos algunos problemas. Tenemos algunos casos (¿por qué?) Donde la variable "userid" no está definida, por lo que los registros aparecen con este nombre: MYAPPLI_unknown_SEPARATED.log.

¿Es el MDC un singleton de la aplicación web? ¿O está en una sesión de alcance?

En realidad, tengo que generar 2 registros / sesión de usuario. Así que tengo un segundo SiftingAppender con el mismo discriminador, y un filtro (filtro de umbral) porque el segundo registro debería ser el mismo con un nivel de rastreo diferente. ¿Es la buena manera de hacer eso?

Gracias.

Respuesta 1

Estoy trabajando en un problema de tarea. En este momento, tengo una lista de nombres. Tengo una función que debería agregar el nombre a la Lista, y otra que debería obtenerlo. Sin embargo, solo obtiene una cadena vacía ...

Me gustaría aplicar Java concurrente, es decir, invocable para el conjunto de resultados. El escenario es: consulta la base de datos utilizando JDBC. Envíe el conjunto de resultados a invocable para escribir en diferentes archivos. Como los datos serían ...

Estoy tratando de calcular más rápido mi programa. Pero usar hilo lo hace más lento. Aquí está el código que simplificó: en esta matriz, tratando de sumar cada dígito. Por ejemplo: dígitos de la unidad = 3 + 6 Lista & ...

Hola gente, tengo un problema grave a mano, tengo un archivo zip en una máquina cliente y necesito cargar ese archivo zip en la máquina del servidor en una ubicación específica, la máquina cliente automáticamente ...