¿Cómo escribir una aplicación C / C ++ que escribe en un directorio / var / log / myapp?
Fondo
En sistemas Linux,Registros de aplicaciones existen en subdirectorios de/var/log
, que es propiedad deroot/root
y tiene 755 permisos en mi sistema. Por ejemplo, veo/var/log/mysql
y/var/log/samba
.
Pregunta
Si quiero unmyapp para poder escribir en un/var/log/myapp
, cuál es elforma canónica de lograr esto en C / C ++?
Pensamientos
Tengo que hacer algo loco comosetuid root
si no quierosudo a_setup_script.sh
? Tenga en cuenta que soy consciente de lasyslog
rutinas, pero son insuficientes para mis necesidades (necesito registrar mucha más información, separada en diferentes archivos, de ahí la necesidad del subdirectorio).
¿Debo buscar en una combinación de empaquetado de Ubuntu (para configurar el directorio) y dirigir el archivo IO al subdirectorio (pormyapp)?
Me gustaría seguir los estándares tanto como sea posible.
Apéndice
Se me olvidó mencionar,myapp es en realidad un proceso daemon (un servidor que escucha a los clientes), por lo que no sería tan malo tener unmyapp_user que realmente ejecuta / inicia el proceso.
RESPONDER
Para Ubuntu, la mejor solución parece serrsyslog
, un poderoso y moderno reemplazo parasyslog
. Generará archivos / directorios según sea necesario, tiene un lenguaje incorporado para enrutamiento flexible desyslog
entradas, y utiliza el simple, antiguosyslog
API en el nivel C / C ++. Para almacenar información de enrutamiento, puede definir su propia codificación del mensaje de texto en C / C ++, junto con unarsyslog.conf
Para manejar la decodificación.