The JSON representation of
NEW in a trigger is just
row_to_json(NEW), so that part is straightforward.
But writing into files on the server is a different story. It's only allowed to superusers because it gives the ability to corrupt or destroy all the instance's data.
I don't think there's a builtin function to write on the filesystem, but
the contrib module adminpack provides one:
pg_file_write(filename text, data text, append boolean)
data would be
row_to_json(NEW) in your case.
The file should be inside the data directory, because:
Only files within the database cluster directory can be accessed
although I think you may use symbolic links to circumvent that limitation,
if using a file system that supports them.
Here's a working example:
CREATE FUNCTION mytrigger()
PERFORM pg_catalog.pg_file_write('outputlog', row_to_json(NEW, true)::text, true);
outputlog will be created in the data directory.