Eu sugeriria ir para /var/log/foo.uid/ , porque /var/log/ é meu primeiro lugar para procurar por registros em um servidor.
Outra opção é usar sua primeira escolha, ~/.foo/logs/ , e criar um link simbólico para ela em /var/log .
Qual é a localização de um log convencional para processos executados em nome de usuários?
~/.foo/logs/ - minha melhor escolha, mas não super incrível
/var/log/foo.uid/ - os usuários que não são do sistema não podem criar diretórios aqui, precisam de cooperação para criar, em primeiro lugar.
Um arquivo comum em /var/log/ (por exemplo, /var/log/foo.log ) - Não privado
etc.
Eu sugeriria ir para /var/log/foo.uid/ , porque /var/log/ é meu primeiro lugar para procurar por registros em um servidor.
Outra opção é usar sua primeira escolha, ~/.foo/logs/ , e criar um link simbólico para ela em /var/log .
Enquanto /var/log é o lugar canônico para procurar por logs, como aponta @pkhamre, não vejo a necessidade de poluir a pasta com logs gerados por "usuário". Eu preferiria apenas serviços de todo o sistema para logar em /var/log .
Dito isto, se o aplicativo for um aplicativo gráfico (em execução no X), sugiro seguir o Especificação de Diretório Base do XDG e elimine os logs em $XDG_DATA_HOME/foo/log/ com $XDG_DATA_HOME usando como padrão $HOME/.local/share . Isso tem uma desvantagem, no entanto. Você precisa trabalhar mais se quiser agregar os logs por algum motivo - com a solução anterior, um cat /var/log/foo.*/* teria sido suficiente.
Como /var/log não é gravável pelos usuários e, se você não quiser manter os logs em seus respectivos diretórios iniciais, sugiro usar /var/tmp/foo.logs.uid , que seria gravável pelos usuários e centralizado.