Archivo de registro separado de Java para argumentos de programa separados

Tengo un solo archivo que envía SMS a diferentes redes móviles de acuerdo con los argumentos de la línea de comando que le pasaron. Vodafone, 3 network, T-Mobile, O2 ... etc. Entonces, cuando se pasa la discusión

$Run SMSDaemon 3Network  // sends sms to 3 networks's mobile users
$Run SMSDaemon Vodafone  // sends sms to Vodafone  mobile users
$Run SMSDaemon TMobile  // sends sms to TMobile  mobile users
$Run SMSDaemon O2    // sends sms to O2 mobile users

Ahora, quiero crear archivos de registro separados para una red separada, de modo que pueda tener información de registro, mensaje de depuración por separado de acuerdo con las redes móviles.

Como solo tengo un único archivo SMSDaemon, he intentado lo siguiente, pero no está escribiendo nada en el archivo. Solo está escribiendo en un archivo que se ha definido en el archivo log4j.properties. Entonces, ¿estoy confundido sobre qué escribir en log4j.properties y qué escribir en este archivo java?

public static void main(String[] args) {
if( args.length != 1  {  return;}
networkUnique = args[0];
setLogProps(networkUnique);
//other codes and in setLogProps method 

private static void setLogProps(String networkUnique)
{
log = Logger.getLogger(networkUnique);
Properties logprops=new Properties();
logprops.setProperty("log4j.appender.file","org.apache.log4j.FileAppender");
logprops.setProperty("log4j.appender.file.maxFileSize","300MB");
logprops.setProperty("log4j.appender.file.maxBackupIndex","100");
logprops.setProperty("log4j.appender.file.File","/etc/sms/"+networkUnique+".log");
logprops.setProperty("log4j.appender.file.threshold","debug");
logprops.setProperty("log4j.appender.file.layout","org.apache.log4j.PatternLayout");
logprops.setProperty("log4j.appender.file.layout.ConversionPattern","%d [%t] %-5p  [%-35F : %-25M : %-6L] %-C -%m%n"); 
logprops.setProperty("log4j.appender.stdout","org.apache.log4j.FileAppender"); 
PropertyConfigurator.configure(logprops); 
log.info("Log message Starting for "+ networkUnique);
}

En el archivo log4j.properties se escribe lo siguiente. Todos los registros se escriben en el archivo network.log que se define en estas propiedades ... que no está de acuerdo con mis requisitos. Necesito un registro separado para una red separada que se define en el método SMSDaemon setLogProps.

# Define the root logger with appender file
#log = /etc/sms/
log4j.rootLogger = info, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
#log4j.appender.FILE.File=${log}/network.log

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

Por favor recomiende.

Gracias por adelantado.

Respuesta 1

Necesita crear diferentes apéndices para lograr el objetivo. Pruebe estas configuraciones:

<appender name="3Network" class="org.apache.log4j.FileAppender">
    <param name="file" value="logs/3Network.log" />
    <param name="append" value="true" />        
</appender> 
<appender name="Vodafone" class="org.apache.log4j.FileAppender">
    <param name="file" value="logs/Vodafone.log" />
    <param name="append" value="true" />        
</appender> 
<appender name="TMobile" class="org.apache.log4j.FileAppender">
    <param name="file" value="logs/TMobile.log" />
    <param name="append" value="true" />        
</appender> 

Lo mismo puedes escribir como:

log4j.appender.TMobile=org.apache.log4j.FileAppender
log4j.appender.TMobile.File=logs/TMobile.log.. 

y así..

Espero que esto te ayude a resolver tu problema. También vea esto - referencia

Respuesta: 2

Estoy escribiendo un proyecto java para insertar datos en neo4j usando una consulta de cifrado. Quiero evitar que neo4j cree un nodo duplicado, en lugar de vincular el otro nodo con el nodo existente. CREATE (n1: nodo {...

Tengo archivos de texto almacenados en GAE Blobstore. Ahora quiero leer el contenido del archivo y verlo en mi navegador, sin descargar realmente el archivo. Estoy accediendo al servlet haciendo clic en ...

Soy un veterano de Java, pero he estado usando JDK8 durante mucho tiempo. Decidí que finalmente quiero actualizar, así que he estado usando Java11. He estado disfrutando de las nuevas funciones, pero he llegado al punto en que ...

Leí este artículo que muestra cómo importar / exportar proyectos en Eclipse (aunque parece un poco desactualizado y estoy usando 3.7 Indigo). Para exportar un proyecto, vaya a Archivo >> Exportar y ...