I set up several programs in supervisord. They send their output to stdout, that is forwarded to file using supervisord. There is a logrotation function in supervisord, but the problem is that it creates new file using 'root' account and my programs (that are running using user account via supervisord) fail to write there. Is it possible to set up a user, that will be used to create a new file after rotation?
I think you've mistaken the problem your programs have (or maybe didn't describe the question well enough)
What supervisord is doing is creating a pipe for your program to write to (stdout and maybe stderr) and then supervisord is reading that pipe and writing to the log files. In other words, the program can never fail to write to stdout due to its own permission problems. The only permission problem that could occur is if supervisord itself couldn't open the new log file.
If you just need the logs to be accessible to a specific account, you might try putting the log files in a directory with set-gid bit enabled, and make sure systemd's umask allows group-read (or write) permission.