When you start a new job in background, the file descriptors don't change. That's why you see the output on the terminal. Indeed, you can even start 2 jobs and see the output overlapping:
$ ping wotas.net &
$ ping freepo.st &
You can redirect stdout
the usual way:
$ ping wotas.net > ping.log &
But I've never seen a built-in way for redirecting stdout
to a log file with the same name and location of the program. It doesn't sound like a good design. It sounds more like a particular scenario that you'll have to script your way to, perhaps like one of these:
$ executable > $(realpath executable).log &
$ executable > $(which executable).log &