While testing on SQL Server 2019, it looks like that process_login_finish
event is only fired when a new session is established.
I have a .NET application that I've set Application Name=My Test App
in the connection string. It connects to a database (database_id
7 in this case) and runs queries. When I start this app up for the first time, I can check the XE and sys.dm_exec_sessions
:

SELECT *
FROM sys.dm_exec_sessions s
WHERE s.program_name = 'My Test App';

As you can see, the event fired once, and my app has established one session on the server.
The connection pooling feature built into the SqlClient driver means that, if the application isn't under very much load, the same session will continue to be used. Thus I would rarely see this process_login_finish
event fire.
If I cause the app to run a bunch more queries, eventually it will create more connections and add them to the pool, and that event will fire each time this occurs:


As you can see, eventually process_login_finish
fired two more times, and I now have three sessions established from my app.
A certain amount of inactivity can cause the session to go away, in which case the next time the app connects, we'll see process_login_finish
fire again.
Note: in my testing above, I never saw the login_event
event fire, although it was included in my XE session definition.