vol ver uso sirve significa que para funcion ejemplos ejemplo comando objective-c nslog

objective-c - sirve - uso del comando ver



NSLog() tanto para la consola como para el archivo (2)

Me gustaría redirigir NSog() al archivo, pero aún así ver la salida en la consola. Soy consciente de que stderr puede ser redirigido a un archivo usando:

freopen("file.log", "a+", stderr);

pero después de redirigirlo a archivo, el registro ya no se muestra en la salida de la consola.

Podría crear un envoltorio personalizado alrededor de NSLog() pero no obtendría registros de bloqueo registrados que se escriben en stderr en el momento del bloqueo de la aplicación.

También estaba experimentando con dup() y otros métodos para duplicar descriptores de archivos, pero la salida era ether en el archivo o en la consola, nunca en ambos.

Aquí se hicieron preguntas similares: escriba stderr en el iPhone tanto en el archivo como en la consola, pero sin una respuesta aceptada, o con sugerencias para usar un contenedor NSLog ().

¿Alguien tiene una idea sobre cómo gestionar este trabajo? Gracias de antemano.

ACTUALIZACIÓN: la parte más importante de la redirección es tener registros de errores del sistema ( stderr ) escritos tanto en la consola como en el archivo.


La forma en que lo hemos implementado es:

if (!isatty(STDERR_FILENO)) { // Redirection code }

Esto se basa en la suposición general de que si se adjunta una consola, no es necesario almacenar esos registros en el archivo, ya que ya está depurando. Por lo tanto, cada vez que se conecte la consola, los registros se imprimirán allí, de lo contrario se guardarán en un archivo.


De acuerdo con los documentos , necesitará un servicio de registro personalizado.

Necesita, como mínimo, una función que lleve los argumentos variadic y printd a NSLog y fprintf, algo como:

void myLog(NSString* format, ...) { va_list argList; va_start(argList, format); NSString* formattedMessage = [[NSString alloc] initWithFormat: format arguments: argList]; va_end(argList); NSLog(@"%@", formattedMessage); fprintf(myFileDescriptor, "%s/n", [formattedMessage UTF8String]); [formattedMessage release]; // if not on ARC }

O hay marcos de registro de cacao.

Buscando un Marco de Registro de Cacao Específico