### Body

The _trigger_ log doesn't show that a trigger timed out when it is canceled due to timeout.

We should try to see if we can add a log message that would show up in the right place.  If we emit it from the trigger process, it might show up out of order.  

But then again, if we ultimately don't need to go back to the task, that would not be a problem.  

Additionally if we ultimately can "log from anywhere" then again, this would provide a clean solution.

This came up in PR discussion here: https://github.com/apache/airflow/pull/30853#discussion_r1187018026

The relevant trigger code is here: https://github.com/apache/airflow/blob/main/airflow/jobs/triggerer_job_runner.py#L598-L619

I think we could add logic so that when we receive a cancelled error (which could be for a few different reasons) then we can log the reason for the cancellation.   I think we could just add an `except CancelledError` and then log the reason.  We might need also to update the code in the location where we actually _initiate_ the cancellation to add sufficient information for the log message.

cc @syedahsn @phanikumv @jedcunningham @pankajastro 

### Committer

- [X] I acknowledge that I am a maintainer/committer of the Apache Airflow project.
#
#
from __future__ import annotations
import asyncio
import logging
import os
import signal
import sys
import threading
import time
import warnings
from collections import deque
from contextlib import suppress
from copy import copy
from queue import SimpleQueue
from typing import TYPE_CHECKING, Deque
from sqlalchemy import func
from airflow.configuration import conf
from airflow.jobs.base_job_runner import BaseJobRunner
from airflow.jobs.job import Job, perform_heartbeat
from airflow.models.trigger import Trigger
from airflow.serialization.pydantic.job import JobPydantic
from airflow.stats import Stats
from airflow.triggers.base import BaseTrigger, TriggerEvent
from airflow.typing_compat import TypedDict
from airflow.utils.log.file_task_handler import FileTaskHandler