How can I change the location of ...log file location?
To change pm2's log file location, there are 2 solutions: define log path as parameter when pm2 command is executed (-l, -o, -e), or start pm2 from a configuration file.
For the parameter solution, here is an example:
pm2 start app.js -o ./out.log -e ./err.log
If you don't want to define log path every time when pm2 is executed, you can generate a configuration file, define error_file and out_file, and start pm2 from that:
- Generate a configuration file: - pm2 ecosystem simple. This would generate a file- ecosystem.config.js, with following content:
 - module.exports = {
  apps : [{
    name   : "app1",
    script : "./app.js"
  }]
}
 
- Define - error_file(for error log) and- out_file(for info log) in the file, such as:
 - module.exports = {
  apps : [{
    name   : "app1",
    script : "./app.js",
    error_file : "./err.log",
    out_file : "./out.log"
  }]
}
 
- Delete existing processes in pm2: - pm2 delete <pid>
 - You can get pid by doing: - pm2 status
 
- Start the process from the configuration file: - pm2 start ecosystem.config.js
 
In this way, the logs are saved to ./err.log and ./out.log.
Please refer to the document for detail information.
Can I log the error and info in database instead of a log file?
I didn't find any resources in official document. It seems you need to write code and save log to database yourself.